Veröffentlicht 9. Juni 201015 j Hallo, mit dieser Abfrage: SELECT MAX(datum) AS datum, id_element, id_ort_neu FROM tbl_log GROUP BY id_element, id_ort_neu erhalte ich folgende Daten: datum || id_element || id_ort_neu 07.06.2010 17:29:27 1 0 07.06.2010 17:29:53 2 0 08.06.2010 08:39:58 13 0 08.06.2010 08:56:39 16 0 08.06.2010 08:56:39 17 0 08.06.2010 08:56:39 18 0 08.06.2010 08:56:39 19 0 08.06.2010 08:56:39 20 0 08.06.2010 08:56:39 21 0 07.06.2010 13:51:14 1 1 09.06.2010 09:03:25 21 1 da stört mich aber schon, dass die id_element 21 doppelt vorhanden ist. Nun möchte ich aber nur die Datensätze haben, mit dem höchsten Datum für jedes id_element UND id_ort_neu muss 0 sein. Was möchte ich machen? Ich will die die Element-IDs, die im jüngsten Datensatz einen definierten Ort haben, ausgeben lassen. Was muss ich denn da schreiben??? Bearbeitet 9. Juni 201015 j von steinadler
9. Juni 201015 j Wenn ich dich richtig verstanden habe suchst du: [...] HAVING id_ort_neu = 0 ? Nehm dir am besten ein Buch oder eine online Manual dazu, wenn du noch keine Erfahrung mit SQL-Befehlen hast. Das bringt dir mehr als wenn du für jede 'Kleinigkeit' nachfragen musst
9. Juni 201015 j Autor Wenn ich dich richtig verstanden habe suchst du: [...] HAVING id_ort_neu = 0 ? Im Prinzip dachte ich ja auch, dass das geht, allerdings liefert mir die Ausgabe das letzte Datum, welches id_ort_neu=0 enthält. Ich möchte aber nur eine Ausgabe haben, wenn es sich um den Datensatz mit dem letzten Datum handelt UND id_ort_neu=0 ist.
9. Juni 201015 j Sortiere doch bitte ein wenig deine Gedanken und frage den Rechner genau das, was du uns fragst: Vielleicht klappt dieses: SELECT datum, id_element, id_ort_neu FROM tbl_log where (MAX(datum) = datum and id_ort_neu=0) GROUP BY id_element, id_ort_neu
9. Juni 201015 j Autor Sortiere doch bitte ein wenig deine Gedanken und frage den Rechner genau das, was du uns fragst: Welche eine Weisheit spricht aus deinen Worten... Vielleicht klappt dieses: SELECT datum, id_element, id_ort_neu FROM tbl_log where (MAX(datum) = datum and id_ort_neu=0) GROUP BY id_element, id_ort_neu Nein... also da spuckt der Server eine Fehlermeldung aus (da in einer WHERE-Klausel keine Aggregatfunktionen stehen dürfen) Habe aber folgendes probiert: SELECT datum, id_element, id_ort_neu FROM tbl_log GROUP BY id_element, id_ort_neu, datum HAVING (id_ort_neu = 0) AND (datum = MAX(datum)) Abeer das bringt auch nicht den gewünschten Erfolg, da da nicht der jüngste Eintrag ausgewertet wird. Ich möchte im Prinzip für jede element_id den letzten Datensatz (Datum) auswerten, und wenn dieser id_ort_neu=0 hat soll er in der Ergebnisliste mit erscheinen.
9. Juni 201015 j Autor funktioniert jetzt..... SELECT id_element, datum, id_ort_neu FROM tbl_log WHERE (datum = (SELECT MAX(datum) AS Expr1 FROM tbl_log AS A WHERE (id_element = tbl_log.id_element))) AND (id_ort_neu = 0) ORDER BY id_element Danke für alle konstruktiven Beiträge
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.