AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MySQL GROUP BY Fehler!
Thema durchsuchen
Ansicht
Themen-Optionen

MySQL GROUP BY Fehler!

Ein Thema von Mavarik · begonnen am 2. Apr 2008 · letzter Beitrag vom 3. Apr 2008
Antwort Antwort
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#1

MySQL GROUP BY Fehler!

  Alt 2. Apr 2008, 19:52
Datenbank: mySQL • Version: 5.x • Zugriff über: MySQLTable komponente
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 )

Habe ich da etwas falsch verstanden?

Grüsse Frank
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: MySQL GROUP BY Fehler!

  Alt 2. Apr 2008, 20:05
Die Felder der Abfrageliste müssen entweder Teil der Grupperung oder als Aggregat vorliegen.
Markus Kinzler
  Mit Zitat antworten Zitat
peterlepan

Registriert seit: 5. Jun 2006
Ort: Nordhausen
37 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: MySQL GROUP BY Fehler!

  Alt 2. Apr 2008, 20:19
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.
Peter Tabatt
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: MySQL GROUP BY Fehler!

  Alt 2. Apr 2008, 20:23
Hallo,

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
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: MySQL GROUP BY Fehler!

  Alt 2. Apr 2008, 23:48
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: MySQL GROUP BY Fehler!

  Alt 2. Apr 2008, 23:50
Oder du erzeugst künstliche Aggregate
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: MySQL GROUP BY Fehler!

  Alt 3. Apr 2008, 07:15
Moin,

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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:15 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