ich bräuchte jetzt ein SQL statement, dass mir den User für jede testcaseid zurückliefert der als letztes den testfall bearbeitet hat.
Leider komm ich nicht drauf.
Das ergebnis sollte daher so aussehen.
[table=“width: 500”]
id1
2016-12-05
1
id2
2016-12-05
4
[/table]
danke für eure tipps.
*** Edit ***
Hab schon mit den komischsten group by und Order by konstrukten, geschachtelten selects gearbeitet aber ich sehe den Wald vor lauter Bäumen nicht mehr.
Mag vielleicht noch schöner gehen, aber zuerst mal das Datum des letzten Updates bekommen für jeden Testfall.
[SQL]select testcaseID, MAX(lastupdatedate) AS lastupdate
FROM Tests
GROUP BY testcaseID[/SQL]
Jetzt das ganze nochmals vereinigen
[SQL]select t1.*
FROM Tests t1, (select testcaseID, MAX(lastupdatedate) AS lastupdate
FROM Tests
GROUP BY testcaseID) as t2
WHERE
t1.testcaseID = t2.testcaseID
AND
t1.lastupdatedate = t2.lastupdate;[/SQL]
Daran hatte ich auch schon gedacht, in den Datensätzen oben wird nicht benötigt! Aber wir wissen nicht, wie die komplette Datenbank schaut.
Das Problem ist doch bei MAX und GROUP BY, wenn man alle Spalten wählen möchte, dass ‚Xxx must appear in the GROUP BY clause or be used in an aggregate function‘ !!!
Das ist auch der Suchbegriff.
Also, wenn ‚distinct „on“‘ vom RDBMS unterstützt wird, würd ich immer dahin tendieren.
Bei Oracle ginge das so:
[SQL] select testcaseID, MAX(user) keep (dense_rank last order by lastupdatedate) AS lastupdate_user
FROM Tests
GROUP BY testcaseID[/SQL]
Die Lösung von ionutbaiu konnte auf mein Problem angewandt werden.
Nur der Vollständigkeit halber, da ich in meinem Beitrag auf Oracle hingewiesen habe, falls mal jemand anders diesen Beitrag findet:
Das ‘AS’ keyword wird von oracle nicht unterstützt, dort lautet es daher
[SQL]select t1.*
FROM Tests t1, (select testcaseID, MAX(lastupdatedate) lastupdate
FROM Tests
GROUP BY testcaseID) t2
WHERE
t1.testcaseID = t2.testcaseID
AND
t1.lastupdatedate = t2.lastupdate;
[/SQL]
Grüße von Edit:
Timothy_Truckel, hab deinen Beitrag leider zu spät gesehen, das von dir gezeigte Bsp. schaut interessant aus, und ich werd das auch noch versuchen, Danke
[quote=AmunRa]Das ‘AS’ keyword wird von oracle nicht unterstützt[/quote]Wirklich nicht? muss ich dass jetzt in meinen ganzen Prozeduren wieder löschen? ::slap1 [SPOILER]Doch, wird es, oder meinst Du MySql?[/SPOILER]bye
TT
Also bei mir hat Oracle eine Exception geworfen als ich die subquery mit as umbenannt habe Ich meine sowas
[SQL]SELECT * FROM A,(SELECT * FROM B) AS C[/SQL]
erst als ich das AS entfernt habe ging das statment durch
[SQL]SELECT * FROM A,(SELECT * FROM B) C[/SQL]