Veröffentlicht 24. September 200321 j 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
24. September 200321 j 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.
24. September 200321 j 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.
24. September 200321 j Autor 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
24. September 200321 j 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?
24. September 200321 j Autor 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
24. September 200321 j Wie schon Byte erwähnte, wäre es nicht schlecht zu wissen mit welcher Datenbank du arbeitest
24. September 200321 j Autor verdammt hab ichs vergessen zu erwähnen.... sorry.... ist ne mysql datenbank....
24. September 200321 j 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
24. September 200321 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.