AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi GROUP BY verfälscht die Ergebnisse
Thema durchsuchen
Ansicht
Themen-Optionen

GROUP BY verfälscht die Ergebnisse

Ein Thema von TheMiller · begonnen am 24. Okt 2007 · letzter Beitrag vom 28. Okt 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

GROUP BY verfälscht die Ergebnisse

  Alt 24. Okt 2007, 18:55
Datenbank: MySQL • Version: 4 • Zugriff über: ZEOS
Hallo,

habe mal wieder ein Problem. Und zwar habe ich eine Software geschrieben, in die man sich einloggen kann. Jetzt habe ich eine Tabelle "logins", in der ALLE Logins liegen und eine Tabelle user, in der die Userdaten und Bilderpfade liegen.

Jetzt möchte ich auf der Hauptform die letzten Logins anzeigen und nach User gruppieren. Es sollen auch nur User angezeigt, deren Bildpfad im Profil nicht leer ist.

Dazu habe ich folgende SQL-Query

SELECT logins.*, profil.bildpfad FROM logins AS logins JOIN profil AS profil ON (logins.benutzerid = profil.benutzerid) WHERE bildpfad <> '' GROUP BY logins.benutzerid ORDER BY loginzeit DESC LIMIT 5;

Soweit so gut. Die Query wird ausgeführt und die Bilder werden angezeit - nur leider falsch:

Ich habe 500 Logins in der Tabelle verzeichnet. Der letzte Login ist von mir und ich habe ein Bild drin. Doch das Ergebnis beginnt nicht mit mir, sondern mit einem anderen User und lässt mich komplett außer Acht. Achso: Nicht nur micht, sondern auch andere. Die höchste ID ist nicht die 500 (ich), sondern die 478... warum auch immer. Zwischen 478 und 500 gab es mehrere Logins mit Bild.

Ich hoffe ich habe es genau genug erklärt und ihr könnt mir helfen...


Danke!!!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: GROUP BY verfälscht die Ergebnisse

  Alt 24. Okt 2007, 19:02
Ich denke mal, was Du möchtest, ist dies hier. Alternativ zu der dort beschriebenen Lösung könnte das Problem evtl. noch mit einer HAVING-Klausel hinter der Gruppierung zu lösen sein (muss ich aber noch einmal darüber nachdenken).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#3

Re: GROUP BY verfälscht die Ergebnisse

  Alt 24. Okt 2007, 21:13
Hey ho!

Also, das funktioniert auch nicht so richtig. Ich bekomme immer die Fehlermeldung "Query was empty" - kann aber auch nicht sein.

Was ich vielleicht noch anmerken sollte ist, dass meine ursprüngliche Query aus Post1 funktioniert, wenn ich das GROUP BY weglasse. Doch dann habe ich mich zB 4x drin, wenn ich mich 4 mal einlogge. Sobald ich GROUP BY benutze, tritt das o.g. Verhalten auf...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: GROUP BY verfälscht die Ergebnisse

  Alt 24. Okt 2007, 21:30
Wie erwähnt muss es beim Gruppieren HAVING statt WHERE heißen.
Markus Kinzler
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: GROUP BY verfälscht die Ergebnisse

  Alt 24. Okt 2007, 23:22
Hallo DJ-SPM,

vielleicht so...
SQL-Code:
SELECT l.benutzerid, p.bildpfad
FROM logins l
INNER JOIN profil p
  ON l.benutzerid = p.benutzerid
WHERE bildpfad <> '
GROUP BY l.benutzerid, p.bildpfad
ORDER BY MAX(loginzeit) DESC LIMIT 5
Gruss
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: GROUP BY verfälscht die Ergebnisse

  Alt 24. Okt 2007, 23:24
Damit würden ja nur die falschen Ergebnisse absteigend sortiert (oder habe ich jetzt einen Knoten im Hirn?).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: GROUP BY verfälscht die Ergebnisse

  Alt 25. Okt 2007, 07:18
Ich vermisse im Select-Statement eine Gruppenfunktion(SUM, AVG, MIN, MAX, COUNT), ohne eine solche Gruppenfunktion macht ein GROUP BY keinen Sinn!

In deinem Fall solltest du eher eine Sortierung (DESC) auf die LogIn-Id ausführen, um die letzten fünf Logins mit Bild zu erhalten.

Nebenbei: steht in Bildpfad immer ein Leerstring? Ich würde eher auf NOT NULL testen.

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#8

Re: GROUP BY verfälscht die Ergebnisse

  Alt 25. Okt 2007, 07:49
Zitat von mikhal:
Ich vermisse im Select-Statement eine Gruppenfunktion(SUM, AVG, MIN, MAX, COUNT), ohne eine solche Gruppenfunktion macht ein GROUP BY keinen Sinn!
Ist in der ORDER BY clause, falls du die Version von Thorsten meinst.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: GROUP BY verfälscht die Ergebnisse

  Alt 25. Okt 2007, 08:01
Zitat:
Ich vermisse im Select-Statement eine Gruppenfunktion(SUM, AVG, MIN, MAX, COUNT), ohne eine solche Gruppenfunktion macht ein GROUP BY keinen Sinn!
Er hat doch alle Felder der Auswahl in der Gruppierung
Markus Kinzler
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#10

Re: GROUP BY verfälscht die Ergebnisse

  Alt 25. Okt 2007, 08:18
Zitat von mkinzler:
Er hat doch alle Felder der Auswahl in der Gruppierung
Er meinte es wohl genau andersrum: Warum gruppieren, wenn man es nicht müsste.
Aber ich glaube Michael hat einfach das "max" in der Sortierung übersehen.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:53 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