Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQL-Abfrage mit Max und Group liefert falsche Ergebnisse (https://www.delphipraxis.net/156235-sql-abfrage-mit-max-und-group-liefert-falsche-ergebnisse.html)

TheMiller 24. Nov 2010 14:36

Datenbank: MySQL • Version: 5 • Zugriff über: direkt

SQL-Abfrage mit Max und Group liefert falsche Ergebnisse
 
Hallo,

wieder ein Problem - heut is kein doller Tag...

Also: Ich versuche via MySQL den höchsten Wert einer Gruppe herauszufinden. Ich bekomme den höchsten Wert zwar angezeigt, aber die Datensätze werden gemischt. Hier ein Beispiel:

Tabelle:
Code:
ID | TITEL | TS
1   Test1    123456
1   Test2    123457
2   Bla1     100000
2   BlaNeu  100001
Als ResultSet erhalte ich folgendes (falsches) Ergebnis
Code:
ID | TITEL | TS
1   Test1    123457
2   Bla1     100001
Wie man sehen kann, wir der Titel vom ersten Datensatz genommen und die größte Zeit in der Gruppe. Das ist aber falsch. Richtig wäre bei "ID 1": Test 2 / 123457.

Meine SQL sieht mittlerweile so aus:

Code:
SELECT id, titel, MAX( ts ) AS 'ts'
FROM TABELLE
GROUP BY id
ORDER BY ts DESC
Was ist daran falsch. Ich verzweifel an der einfachen Geschichte... :(

Danke

Bummi 24. Nov 2010 14:42

AW: SQL-Abfrage mit Max und Group liefert falsche Ergebnisse
 
Eigentlich sollte der SQL gar nicht ausgeführt werden können.
Wenn Du Gruppierst mußt Du alle Felder die nicht mit MAX,SUM,AVG etc. berechnet werden in die Gruppierung mit aufnehmen, in Deinem Fall titel.

EDIT:
das was Du suchst funktioniert zumindest unter MS-SQL so:
Code:
Select titel,TABELLE.TS from TABELLE
join
(
SELECT id, MAX( ts ) AS 'ts'
FROM TABELLE
GROUP BY id
) a
on a.ID=TABELLE.ID and a.TS=TABELLE.TS

TheMiller 24. Nov 2010 14:46

AW: SQL-Abfrage mit Max und Group liefert falsche Ergebnisse
 
Ist das nicht nur bei Firebird so? :gruebel:

leddl 24. Nov 2010 14:47

AW: SQL-Abfrage mit Max und Group liefert falsche Ergebnisse
 
Zitat:

Zitat von DJ-SPM (Beitrag 1063731)
Ist das nicht nur bei Firebird so? :gruebel:

Sag bloß, das läuft bei MySQL tatsächlich so... in MSSQL kriegst du das so definitiv nicht hin!

TheMiller 24. Nov 2010 14:49

AW: SQL-Abfrage mit Max und Group liefert falsche Ergebnisse
 
Noch besser...

jetzt sieht meine SQL so aus:

Code:
SELECT id, titel, MAX( ts ) AS 'ts'
FROM tabelle
GROUP BY id, titel;
und er liefert mir ALLE Datensätze wieder zurück.

Bummi 24. Nov 2010 14:51

AW: SQL-Abfrage mit Max und Group liefert falsche Ergebnisse
 
probier mal ob mein EDIT unter MYSQL läuft

TheMiller 24. Nov 2010 14:53

AW: SQL-Abfrage mit Max und Group liefert falsche Ergebnisse
 
@bummi: Es läuft, liefert aber auch ALLE Datensätze zurück

Bummi 24. Nov 2010 14:54

AW: SQL-Abfrage mit Max und Group liefert falsche Ergebnisse
 
den unter EDIT meine ich, der sollte entweder bei Dir nicht funktionieren oder das gewünschte liefern

SQL-Code:
Select titel,TABELLE.TS from TABELLE
join
(
SELECT id, MAX( ts ) AS 'ts'
FROM TABELLE
GROUP BY id
) a
on a.ID=TABELLE.ID and a.TS=TABELLE.TS

TheMiller 24. Nov 2010 14:55

AW: SQL-Abfrage mit Max und Group liefert falsche Ergebnisse
 
Ja, genau die SQL habe ich ausgeführt. Sie liefert leider auch alle Datensätze zurück.

leddl 24. Nov 2010 14:56

AW: SQL-Abfrage mit Max und Group liefert falsche Ergebnisse
 
Zitat:

Zitat von DJ-SPM (Beitrag 1063734)
und er liefert mir ALLE Datensätze wieder zurück.

Ist ja auch kein Wunder, jetzt gruppierst du ja schließlich auch nach dem Titel :zwinker:

Bummis Code sollte das richtige Ergebnis liefern, mein Beispielcode sieht im Grunde genauso aus und funktioniert hier bei mir.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:24 Uhr.
Seite 1 von 2  1 2      

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