Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

MSSQL: Wie muss die Abfrage aussehen?

Empfohlene Antworten

Veröffentlicht

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

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

  • 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.

  • 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.

  • 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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.