Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MySQL GROUP BY Fehler! (https://www.delphipraxis.net/111392-mysql-group-fehler.html)

Mavarik 2. Apr 2008 18:52

Datenbank: mySQL • Version: 5.x • Zugriff über: MySQLTable komponente

MySQL GROUP BY Fehler!
 
Hallo Zusammen...

Delphi-Quellcode:
  MySQLTable1.SQL.Text := 'SELECT * FROM mytable GROUP BY Name';
  MySQLTable2.Execute(true);
Danach hat das DBGrid 400 Record...
Doppelte Nachnamen werden ausgeblendet, bzw. immer nur einer wird gezeigt...

mit

Delphi-Quellcode:
  MySQLTable1.SQL.Text := 'SELECT * FROM mytable GROUP BY Name,Vorname';
  MySQLTable2.Execute(true);
Danach hat das DBGrid 460 Record...

Wo liegt der Fehler? (Zwischen den Ohren oder doch am Server :gruebel: )

Habe ich da etwas falsch verstanden?

Grüsse Frank :wall:

mkinzler 2. Apr 2008 19:05

Re: MySQL GROUP BY Fehler!
 
Die Felder der Abfrageliste müssen entweder Teil der Grupperung oder als Aggregat vorliegen.

peterlepan 2. Apr 2008 19:19

Re: MySQL GROUP BY Fehler!
 
Beim Group By nach dem Feld Name werden allen mehrfach vorkommenden Nachnamen zusammengefasst, wenn der Vorname zum Group by dazukommt, werden nur noch die Datensätze zusammengefasst, bei denen Nachname und Vorname identisch sind, dadurch hast Du mehr Datnsätze in Deinem Grid.

marabu 2. Apr 2008 19:23

Re: MySQL GROUP BY Fehler!
 
Hallo,

Zitat:

Zitat von Mavarik
... Wo liegt der Fehler? ... Habe ich da etwas falsch verstanden?

kein Fehler, eher Letzteres. MySQL bietet ein abschaltbares Feature namens Hidden Fields. Dabei werden alle Non-Aggregate-Fields, welche nicht in die GROUP BY-Klausel aufgenommen werden, als unique angesehen - genau ein Wert eines zufällig ausgewählten Tupels jeder Gruppe erscheint in der Ergebnismenge. Das erklärt den Sprung von 400 auf 460 bei Erweiterung der GROUP BY-Klausel in deinem Beispiel.

Freundliche Grüße

Mavarik 2. Apr 2008 22:48

Re: MySQL GROUP BY Fehler!
 
Hallo!

Ja Danke, dass habe ich soweit verstanden... Wie kann ich diese Funktionalität abschalten?

Habe mir jetzt beholfen indems ich "Group By Name,Vorname,ID" schreiben...

Ab das ist doch sicherlich nicht DIE Lösung, oder?

Grüsse Frank :dp:

mkinzler 2. Apr 2008 22:50

Re: MySQL GROUP BY Fehler!
 
Oder du erzeugst künstliche Aggregate

marabu 3. Apr 2008 06:15

Re: MySQL GROUP BY Fehler!
 
Moin,

Zitat:

Zitat von Mavarik
... Wie kann ich diese Funktionalität abschalten? ...

da gibt es mehrere Möglichkeiten. Du kannst den Service mit der Option --sql-mode=ONLY_FULL_GROUP_BY starten oder du regelst das für deine Session mit SET SESSION SQL_MODE = 'ONLY_FULL_GROUP_BY'.

Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz