Entwickler-Ecke
Datenbanken - Group by in SQL (firebird 1.5)
Josef-B - So 11.07.04 16:36
Titel: Group by in SQL (firebird 1.5)
Folgendes Problem:
Ich habe ein dbgrid an einer IBQuery:
Es geht um die Anzeige von Summen verschiendener Artikel, (Leergut-Verwaltung)
bei der dazugehörigen SQL-Anweisung:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| SELECT bewegungen.ARTIKELID, SUM(bewegungen.menge_abgegeben) as SummeAbgeben, SUM(bewegungen.menge_erhalten) as Summeerhalten, SUM(bewegungen.menge_abgegeben)- SUM(bewegungen.menge_erhalten) as Differenz, stamm.bezeichnung FROM BEWEGUNGEN INNER JOIN stamm ON bewegungen.ARTIKELID = STAMM.ARTIKELID GROUP BY bewegungen.ARTIKELID |
bekomme ich folgende SQL-Fehlermeldung:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).
Das ganz bekomme ich auch, wenn ich die Anweisung nur mal ohne Delphi bei IbExpert ausführe.
Ich habe es auch schon mit where probiert, the same.
Irgendwas muss da mit der Verknüpfung der Tabellen sein, nur mit der Tabelle "Bewegungen"
gehts.
Martin77 - Mo 12.07.04 06:37
Wenn Ich mich nicht irre, musst du beim inner join noch angeben ob du Left oder Right joinen willst.
Martin
Josef-B - Mo 12.07.04 07:12
Das ist es glaub ich nicht. Hab ich schon probiert.
Hab in einem Buch über Interbase nachgesehen, da steht die SQL Anweisung eigentlich so drin. Ich glaube der Firebird kann das nicht richtig interpretieren, kann das sein?
Lemmy - Mo 12.07.04 07:19
Titel: Re: Group by in SQL (firebird 1.5)
Hi Josef,
versuch mal folgendes:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| SELECT bewegungen.ARTIKELID, SUM(bewegungen.menge_abgegeben) as SummeAbgeben, SUM(bewegungen.menge_erhalten) as Summeerhalten, SUM(bewegungen.menge_abgegeben-bewegungen.menge_erhalten) as Differenz, stamm.bezeichnung FROM BEWEGUNGEN INNER JOIN stamm ON bewegungen.ARTIKELID = STAMM.ARTIKELID GROUP BY bewegungen.ARTIKELID |
Grüße
Lemmy
Josef-B - Mo 12.07.04 07:53
Hallo Lemmy,
das ist nicht die Lösung. Wenn die Abfrage nur der Summen machen aus der Tabelle bewegungen, dann gehts.
Er hat die Schwierigkeiten, wenn die zweite Tabelle 'Stamm' dazukommt, es geht um die Auflösung eines Fremdschlüssels.
Weißt Du was ich meine?
Lemmy - Mo 12.07.04 08:13
Hi josef,
habe gerade gesehen, dass Du aus der Tabelle Stamm auch noch was selektierst... Setze die Spalte auch noch in die Group-By
Quelltext
1: 2: 3:
| stamm.bezeichnung FROM BEWEGUNGEN INNER JOIN stamm ON bewegungen.ARTIKELID = STAMM.ARTIKELID GROUP BY bewegungen.ARTIKELID, Stamm.Bezeichnung |
Grüße
Lemmy
Josef-B - Mo 12.07.04 10:23
Ja genau das wars. Danke.
Hatte schon gedacht, es geht nicht, und mir ne Menge Umwege ausgedacht, um es noch anders hinzukriegen.
Firebird ist doch klasse.
Lemmy - Mo 12.07.04 10:28
| Josef-B hat folgendes geschrieben: |
Firebird ist doch klasse. |
Was soll das heißen???? FB ist NUR klasse ;-)
Grüße
Lemmy
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!