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
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.
Peregrin Geschrieben 24. September 2003 Geschrieben 24. September 2003 hi, select nr, max(datum) from test3 group by nr sollte gehen. hth
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.
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
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?
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
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
SwordMaster Geschrieben 24. September 2003 Autor Geschrieben 24. September 2003 verdammt hab ichs vergessen zu erwähnen.... sorry.... ist ne mysql datenbank....
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
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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden