Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi [SQL] Group by. Kleine Erklärung (https://www.delphipraxis.net/37188-%5Bsql%5D-group-kleine-erklaerung.html)

Die Muhkuh 2. Jan 2005 11:19


[SQL] Group by. Kleine Erklärung
 
Hi,

ich mach grad mit PHP was mit Datenbanken. Da hatte ich folgenden SQL-Befehl:

SQL-Code:
SELECT vote_result, vote_option_text, SUM(vote_result) AS gesamt FROM " . $prefix . "vote_results WHERE vote_id = $id
Der ging nicht. Erst als ich:
SQL-Code:
SELECT vote_result, vote_option_text, SUM(vote_result) AS gesamt FROM " . $prefix . "vote_results WHERE vote_id = $id GROUP BY vote_result
geschrieben hatte ging das.

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:

Jelly 2. Jan 2005 11:28

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:
select count(ID) from Kontakte
liefert dir, über alle Datensätze deiner Tabelle, die Anzahl der Records. Als Ergebnis kriegst du einen einzigen Record zurück.

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:
select Geschlecht, count(ID) from Kontakte group by Geschlecht
Mit sum, min, max, avg etc. ist es genauso.

Die Muhkuh 2. Jan 2005 11:38

Re: [SQL] Group by. Kleine Erklärung
 
Hi Tom,

thx. Und was wäre wenn ich jetzt schreibe:

SQL-Code:
select Geschlecht, count(ID) from Kontakte group by ID
Ginge das auch?

Jelly 2. Jan 2005 11:42

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.

Die Muhkuh 2. Jan 2005 11:47

Re: [SQL] Group by. Kleine Erklärung
 
Hi,

ok is klar.


Aber warum hast du dann hier nicht gemeckert:

SQL-Code:
$sql = "SELECT vote_result, vote_option_text, SUM(vote_result) AS gesamt FROM " . $prefix . "vote_results WHERE vote_id = $id GROUP BY vote_result";
Ich gruppiere hier auch nach der SUM()

Jelly 2. Jan 2005 12:16

Re: [SQL] Group by. Kleine Erklärung
 
mit
SQL-Code:
... group by vote_result, vote_option_text
funktioniert auch das. :zwinker:


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