steinadler Geschrieben 9. Juni 2010 Teilen Geschrieben 9. Juni 2010 (bearbeitet) 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 2010 von steinadler Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kaeyu Geschrieben 9. Juni 2010 Teilen Geschrieben 9. Juni 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
steinadler Geschrieben 9. Juni 2010 Autor Teilen Geschrieben 9. Juni 2010 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Kleine Geschrieben 9. Juni 2010 Teilen Geschrieben 9. Juni 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
steinadler Geschrieben 9. Juni 2010 Autor Teilen Geschrieben 9. Juni 2010 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
steinadler Geschrieben 9. Juni 2010 Autor Teilen Geschrieben 9. Juni 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.