SwordMaster Geschrieben 24. September 2003 Geschrieben 24. September 2003 hallo leute... hab folgendes problem create table test3(Nr SMALLINT, Datum Date); daten hab ich so eingefügt... insert into test3 VALUES (1,'2003-09-24'); insert into test3 VALUES (1,'2003-09-23'); insert into test3 VALUES (1,'2003-09-25'); insert into test3 VALUES (2,'2003-09-24'); insert into test3 VALUES (2,'2003-09-23'); insert into test3 VALUES (2,'2003-09-25'); mein problem sieht folgendermaßen aus... ich bräuchte alle Nummern, + das größte datum was diese Nr besitzt.... ich hätte es folgendermaßen probiert select * from test3 group by nr; aber da krieg ich immer bei datum immer "2003-09-24" als ergebnis.... wie kann ich jede nr nur einmal bekommen, und zwar den datensatz mit dem größten datum? Wär super wenn ihr mir helfen könntet.. Danke swordMaster Zitieren
byte Geschrieben 24. September 2003 Geschrieben 24. September 2003 Hast du es mal mit SELECT Nr, max(Datum) FROM Table1 GROUP BY Nr, Datum max gibt den grössten Wert bei einer Gruppierung zurück, ich konnte allerdings nicht testen ob das auch bei Datumsfeldern hilft. Ausserdem weiss ich nicht ob es zum CoreSQL gehört und von jeder DB unterstützt wird. Ich persönlich arbeite mit MS SQL Server. Zitieren
Peregrin Geschrieben 24. September 2003 Geschrieben 24. September 2003 hi, select nr, max(datum) from test3 group by nr sollte gehen. hth Zitieren
DerMatze Geschrieben 24. September 2003 Geschrieben 24. September 2003 Die beiden Vorredner haben Recht. Man benötigt eine "Groupfunction" um GROUP BY benutzen zu können. GFs sind z.B. SUM, COUNT, MAX, MIN usw. Zitieren
SwordMaster Geschrieben 24. September 2003 Autor Geschrieben 24. September 2003 leider reicht es mir jetzt dcoh nicht das größte datum zu bekommen.... ich müßte direkt abfragen ob für die gewünschte nummer ein BESTIMMTES datum gespeichert ist => habs mit SELECT *,if (Datum='2003-09-24', ‘ja’, ’nein’) AS aktuell from test3 versucht... und funktioniert auch jedoch bekomme ich jede nummer öfter als ergebnis also hab ichs mal wieder gruppiert SELECT *,if (Datum='2003-09-24', ‘ja’, ’nein’) AS aktuell from test3 group by nr jedoch fällt mir dann wieder der gewünschte datensatz beim groupieren weg *verzweifel* mit max(aktuell) kann ich nicht arbeiten (selbst wenn ich mit 0, 1) arbeiten würde, da er immer sagt: ERROR 1054: Unknown column 'aktuell' in 'field list' habt ihr noch ne idee? Wär echt super thx. SwordMaste Zitieren
Peregrin Geschrieben 24. September 2003 Geschrieben 24. September 2003 du willst also alle nr mit einem bestimmten wert in der spalte datum haben? select nr from test3 where datum = 'datums_wert' liefert dir alle nr, zu welchen ein datum datums_wert existiert. oder hab ich jetzt was falsch verstanden? Zitieren
SwordMaster Geschrieben 24. September 2003 Autor Geschrieben 24. September 2003 leider nein.... ich müßte alle nummern wissen (egal welches datum) und dann noch zusätzlich wissen welche von diesen nummern das passende datum hat.... mit der where klausel weiß ich ja leider nicht alle nummern Zitieren
DerMatze Geschrieben 24. September 2003 Geschrieben 24. September 2003 Wie schon Byte erwähnte, wäre es nicht schlecht zu wissen mit welcher Datenbank du arbeitest Zitieren
SwordMaster Geschrieben 24. September 2003 Autor Geschrieben 24. September 2003 verdammt hab ichs vergessen zu erwähnen.... sorry.... ist ne mysql datenbank.... Zitieren
byte Geschrieben 24. September 2003 Geschrieben 24. September 2003 Ich bin jetzt ein lein wenig verwirrt, wenn du nicht groupieren möchtest, da dort datensätze "wegfallen", mach doch einfach ein SELECT DISTINCT blalbla Zitieren
beetFreeQ Geschrieben 24. September 2003 Geschrieben 24. September 2003 Bin mir jetzt leider nicht ganz sicher, ob MySQL Subqueries unterstützt, aber wenn ja, dann sollte diese Möglichkeit funzen: SELECT DISTINCT NR,(SELECT DATUM FROM TEST3 WHERE NR = A.NR AND DATUM = '24.09.03') AS AKTUELLES_DATUM FROM TEST3 AS A So bekommst du alle Nummern und in der Spalte Datum eben das passende Datum oder NULL, wenn's nicht existiert... Alternativ wäre folgendes denkbar: SELECT DISTINCT A.NR,B.DATUM FROM TEST AS A LEFT OUTER JOIN TEST AS B ON (A.NR = B.NR AND B.DATUM = '24.09.03') Das sollte auch gehen! Alle Angaben sind aber ohne Gewähr Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.