Hi!
Also meine SQL-Fähigkeiten sind schon arg eingerostet, darum bitte ich euch um Rat ob/wie mein Problem in einer SQL-Abfrage umgesetzt werden kann.
Die Tabelle sieht folgendermaßen aus:
---- DATUM ------------- CT_ID ----- ID ----- NAME ----- HID
-----------------------------------------------------------------
#1- 13.3.2006 17:25:00 -- 241 ------- 1 ----- Name01 ---- H1
#2- 13.3.2006 17:26:00 -- 242 ------- 2 ----- Name02 ---- H1
#3- 13.3.2006 17:30:00 -- 242 ------- 3 ----- Name02 ---- H1
#4 -13.3.2006 17:34:00 -- 200 ------- 4 ----- Name03 ---- H2
-----------------------------------------------------------------
Die Abfrage soll folgendes liefern:
Das Ergebnis der Query soll Tupel Nummer 1 und Tupel Nummer 3 sein.
Die erste Bedingung ist, dass HID = H1 sein soll.
Tupel 4 fällt durch "WHERE HID = H1" weg, so weit so gut.
Tupel 2 soll dadurch wegfallen, da es 2 Tupel gibt, welche
die gleiche CT_ID haben (CT_ID = 242 bei Tupel 2 & 3). In diesem Falle soll nur jenes Tupel geliefert werden, dessen Datum "später bzw. größer" ist (--> da 17:30 > 17:26 fällt somit Tupel 2 auch weg).
Ist das so ca. klar bzw. verständlich beschrieben?
Ist das in einer SQL-Query gscheit lösbar?
Mein Without-SQL-Workaround-Schmäh wäre, dass ich per SQL einfach nur anhand der HID filtere (also wieder kill Tupel 4) und dann absteigend nach Datum sortiere. Das gelieferte ResultSet würde ich dann einfach in einer Schleife durchlaufen und die Results in eine Collection umfüllen, wobei ich mir aber merke welche CT_ID's schon verwendet wurden (schon verwendet --> skip).
Der Ablauf wäre also:
Schau nach ob CT_ID 242 schon vorhanden ist.
Nein: --> ADD Tupel #3
Schau nach ob CT_ID 242 schon vorhanden ist.
Ja: --> Skip Tupel #2
Schau nach ob CT_ID 241 schon vorhanden ist.
Nein: --> ADD Tupel #1
Dieser Weg wäre aber wohl sicher etwas unperformant :o