![]() |
[SQL] Group by. Kleine Erklärung
Hi,
ich mach grad mit PHP was mit Datenbanken. Da hatte ich folgenden SQL-Befehl:
SQL-Code:
Der ging nicht. Erst als ich:
SELECT vote_result, vote_option_text, SUM(vote_result) AS gesamt FROM " . $prefix . "vote_results WHERE vote_id = $id
SQL-Code:
geschrieben hatte ging das.
SELECT vote_result, vote_option_text, SUM(vote_result) AS gesamt FROM " . $prefix . "vote_results WHERE vote_id = $id GROUP BY vote_result
Jetzt wollte ich mal fragen: Für was brauch ich dieses Group By? Welchen Zweck erfüllt es? MrSpock hats mir zwar schonmal ne kleine Erklärung gegeben doch so ganz verstanden hab ich sie nicht. :oops: |
Re: [SQL] Group by. Kleine Erklärung
Sobald du Aggregatfunktion (Sum, count, max, min, avg etc.) in deinen SQ Abfrage einschließt, und zusätzlich noch einige andere Spalten in deinem Resultset hast, brauchst du das Group by...
Bsp: Eine Tabelle Kontakte mit den Spaltem ID, Name, Vorname, Geschlecht Wobei Geschlecht aus ['W','M']
SQL-Code:
liefert dir, über alle Datensätze deiner Tabelle, die Anzahl der Records. Als Ergebnis kriegst du einen einzigen Record zurück.
select count(ID) from Kontakte
Wenn du jetzt jedoch nicht nur an der Anzahl der Kontakte insgesamt interessiert bist, sondern aufgespaltet nach Geschlecht, musst du gruppieren. Du willst dann als Resultat 2 Datensätz, einer mit der Anzahl deiner Weibchen, und einen mit der Anzahl deiner Männchen... Und das geht so:
SQL-Code:
Mit sum, min, max, avg etc. ist es genauso.
select Geschlecht, count(ID) from Kontakte group by Geschlecht
|
Re: [SQL] Group by. Kleine Erklärung
Hi Tom,
thx. Und was wäre wenn ich jetzt schreibe:
SQL-Code:
Ginge das auch?
select Geschlecht, count(ID) from Kontakte group by ID
|
Re: [SQL] Group by. Kleine Erklärung
Was willst du denn damit erreichen? Wenn du Zusatzspalten in dein Ergebnis einfügst, musst du immer nach diesen gruppieren. Und da du die Spalte ID nicht einfügst, fehlt das Gruppieren hier auch fehl.
|
Re: [SQL] Group by. Kleine Erklärung
Hi,
ok is klar. Aber warum hast du dann hier nicht gemeckert:
SQL-Code:
Ich gruppiere hier auch nach der SUM()
$sql = "SELECT vote_result, vote_option_text, SUM(vote_result) AS gesamt FROM " . $prefix . "vote_results WHERE vote_id = $id GROUP BY vote_result";
|
Re: [SQL] Group by. Kleine Erklärung
mit
SQL-Code:
funktioniert auch das. :zwinker:
... group by vote_result, vote_option_text
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz