Zum Inhalt springen

MSSQL: Wie muss die Abfrage aussehen?


steinadler

Empfohlene Beiträge

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 von steinadler
Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...