Sinn von GROUP BY ?
*jiriki*
- datenbank
Moinsen,
bin hier gerade an ner Uniaufgabe, und frag mich ERNSTHAFT, was der Sinn von einer GROUP BY-Abfrage sein soll. Wenn ich mir eine SELECT-Abfrage gruppieren lasse, spuckt er mir anscheinend immer nur den ersten Datensatz einer Gruppierung aus. Das heisst, wenn ich eine Lagerverwaltung hab, und im Lager sind x, y, z Produkte von drei verschiedenen Anbietern, und ich mache
SELECT * FROM vorrat GROUP BY anbieter
dann gibt er mir in der Ergebnistabelle nur drei Datensätze zurück. Ok, sollen das jetzt meine drei "Gruppen" sein? Wenn ja, wie komm ich wieder an die anderen Datensätze, die ebenfalls zu den drei Gruppen gehören? Ich verstehs nicht. Danke!
Greets, *jiriki*
Hi,
bin hier gerade an ner Uniaufgabe, und frag mich ERNSTHAFT, was der Sinn von einer GROUP BY-Abfrage sein soll.
solange Du andere Spalten selektierst als gruppierst, sehe ich da auch keinen Sinn. Ein ordentliches DBMS wird dies mit einem Fehler quittieren, weil es schlicht und ergreifend keinen Sinn _hat_ - ich sehe es als einen erheblichen Mangel von MySQL an, dass dies dennoch "irgendwas" daraus macht. Unabhängig davon ist die Selektion von "*" außerhalb von Testfällen _extrem_ unsinnig. Gib _immer_ _genau_ die Spalten an, die Du selektieren möchtest.
dann gibt er mir in der Ergebnistabelle nur drei Datensätze zurück. Ok, sollen das jetzt meine drei "Gruppen" sein?
Ja. Die Wahl der Datensätze ist willkürlich - weil Du andere Spalten selektierst als gruppierst. Im übrigen scheinst Du noch nicht auf Gruppenfunktionen wie z.B. COUNT(), SUM(), MIN() oder MAX() gestoßen zu sein.
Wenn ja, wie komm ich wieder an die anderen Datensätze, die ebenfalls zu den drei Gruppen gehören?
Die Datensätze an sich möchtest Du gar nicht mehr haben, deswegen gruppierst Du ja.
Cheatah
Tag Cheatah.
Unabhängig davon ist die Selektion von "*" außerhalb von Testfällen _extrem_ unsinnig. Gib _immer_ _genau_ die Spalten an, die Du selektieren möchtest.
Da ich gerade anfange, mich mit mySQL zu beschäftigen, eine kurze Zwischenfrage: warum?
Siechfred
Hi,
das hat verschiedene Gründe (meiner naiven Ansicht nach...):
MfG
Rouven
Hallo,
SELECT * FROM vorrat GROUP BY anbieter
Ich frage mich wirklich, warum es Datenbanken gibt, die solche Statements zulassen. Das geht vollkommen am Sinn von GROUP BY vorbei.
GROUP BY macht imho nur in Verbindung von Aggregat-Funktionen Sinn.
Hier ein Beispiel:
SELECT anbieter, SUM(anzahl_lagernd) FROM vorrat GROUP BY anbieter
Das würde dir den Lagerstand gruppiert nach Anbietern liefern.
Grüße
Klaus
Jo, ok, danke, ich glaub, ich habs jetzt gerafft. Noch zwei Abfragetypen (Subanfragen und rel. Division), dann hab ichs geschafft. Danke.