| Autor |
Beitrag |
D. Annies
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Do 06.07.06 12:22
hi, Delpher,
SQL-Anweisung 1: 2: 3:
| SELECT count(*) as B.Bücheranzahl, B.klasse, A.KLK FROM Buecher.dbf B, Ausleihsatz.dbf A where B.TITEL IS NOT NULL and (B.KLASSE = A.KLASSE) and ((B.KLASSE like '5%') or (B.Klasse like '6%') or (B.Klasse like '7%') or (B.klasse like '8%') or (B.klasse) '9%') or (B.klasse like '1%')) GROUP BY B.KLASSE; |
Ich bekomme leider eine Fehlermeldung: .. ein einfaches Feld ...
Wer kann helfen??
Danke, Detlef A.
Moderiert von jasocul: SQL-Tags hinzugefügt
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 06.07.06 12:39
Wenn du das Ganze vernünftig formatieren würdest, hättest du den Fehler schon selbst gefunden!
SQL-Anweisung 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| SELECT count(*) as B.Bücheranzahl, B.klasse, A.KLK FROM Buecher.dbf B, Ausleihsatz.dbf A where B.TITEL IS NOT NULL and (B.KLASSE = A.KLASSE) and ((B.KLASSE like '5%') or (B.Klasse like '6%') or (B.Klasse like '7%') or (B.klasse like '8%') or (B.klasse) '9%') or (B.klasse like '1%')) GROUP BY B.KLASSE; |
Siehst du ihn?
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Do 06.07.06 12:43
Hallo,
falls Du den Fehler nicht findest: In einer Group-By-Anweisung müssen alle nicht aggregierte Felder, die im Select vorkommen, angegeben werden.
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 06.07.06 12:52
Das ist nicht der Fehler. Das sollte schon so funktionieren, wie es da steht.
Jetzt stehen die LIKEs schon untereinander. Da muss man doch sehen, dass das einmal fehlt, oder?
Liegt das an der Hitze, oder warum bin ich heute so merkwürdig drauf?
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Do 06.07.06 12:56
Hi, Peter und Smiegel,
ja, es liegt wohl an der Hitze!!
Danke, Detlef
P.S. Leider muss ich den Befehl für meine Zwecke in einer Zeile stehen haben.
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 06.07.06 13:00
D. Annies hat folgendes geschrieben: | | P.S. Leider muss ich den Befehl für meine Zwecke in einer Zeile stehen haben. |
Bastelst du den dynamisch in einem String zusammen? Egal. Zum überprüfen kann man sich den trotzdem mal kurz in einem Editor formatieren. Hätte dir bestimmt 20 Minuten Zeit gespart. 
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Do 06.07.06 13:02
Hi, Smiegel,
das fehlende like habe ich ergänzt, aber der Fehler ist doch noch da:
Wenn ein Group by existiert, muss sich jedes einfache Feld
in den Projektoren im Group by befinden.
Danke für weitere Hilfe, Detlef
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 06.07.06 13:05
Stimmt. Habe ich mindestens zweimal übersehen. Muss wirklich an der Hitze liegen. Sorry Smiegel, du hattest auch Recht.
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Do 06.07.06 23:26
Hi,
habe nichts mehr gehört, wer kann denn noch helfen?
Gruß, Detlef
|
|
opfer.der.genauigkeit
      
Beiträge: 754
Erhaltene Danke: 1
|
Verfasst: Fr 07.07.06 01:12
Ich zitiere mal
smiegel hat folgendes geschrieben: | Hallo,
falls Du den Fehler nicht findest: In einer Group-By-Anweisung müssen alle nicht aggregierte Felder, die im Select vorkommen, angegeben werden. |
Im Klartext:
SQL-Anweisung 1:
| SELECT CustomerID, CustomerName FROM T_Customer GROUP BY CustomerID |
Geht nicht.
SQL-Anweisung 1:
| SELECT CustomerID, CustomerName FROM T_Customer GROUP BY CustomerID, CustomerName |
Geht.
In einer SQL-Anweisung mit Group-By ist die Auswahlliste der angegebenen Elemente beschränkt.
So kann man Gruppierungsspalten & Ausdrücke die nur einen Wert z.B. Aggregatfunktionen, bei denen Spaltennamen
als Parameter verwendet wird, dafür benutzen. Die Ausdrücke *spick* nennt man dann Vektoraggregate.
Mit ntext, text, bit, image etc. funktioniert das im Übrigen nicht.
Ein weiteres Beispiel um das zu erläutern:
SQL-Anweisung 1:
| SELECT PRIMARYID, SUM(Prize + Postage) AS Amount FROM T_DONTKNOW ORDER BY PRIMARYID |
PRIMARYID ist eine mögliche Gruppierungsspalte und SUM ist in diesem Fall unsere Aggregatfunktion.
Ist das Group-By notwendig?
Reicht Order-By nicht aus? Macht die Sache einfacher.
MfG
_________________ Stellen Sie sich bitte Zirkusmusik vor.
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Fr 07.07.06 06:47
Ich dachte, dass du mit deiner eigenen Aussage:
D. Annies hat folgendes geschrieben: | | Wenn ein Group by existiert, muss sich jedes einfache Feld in den Projektoren im Group by befinden. |
Schon das Problem gelöst hättest. Dem war wohl nicht so.
Um die Ausführungen von opfer.der.genauigkeit an deinem Statement zu vollziehen, müsste es dann so aussehen:
SQL-Anweisung 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| SELECT count(*) as B.Bücheranzahl, B.klasse, A.KLK FROM Buecher.dbf B, Ausleihsatz.dbf A where B.TITEL IS NOT NULL and (B.KLASSE = A.KLASSE) and ((B.KLASSE like '5%') or (B.Klasse like '6%') or (B.Klasse like '7%') or (B.klasse like '8%') or (B.klasse like '9%') or (B.klasse like '1%')) GROUP BY B.klasse, A.KLK |
Zuletzt bearbeitet von jasocul am Fr 07.07.06 11:07, insgesamt 1-mal bearbeitet
|
|
p!nhead
      
Beiträge: 35
|
Verfasst: Fr 07.07.06 10:14
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Fr 07.07.06 11:07
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Fr 07.07.06 21:21
Danke, liebe Helfer,
der Knackpunkt war der, dass nach group by eben zwei (oder mehr) Felder stehen müssen!
Jetzt habe ich auch das verstanden. Tja, alles ist leicht, wenn man es weiß...
Bis auf weiteres,
Detlef A.
|
|