SQL ORDER BY und Join mit 2 Tabellen
Hallo an alle,
ich versuche gerade eine Join mit 2 Tabellen auf zubauen und mir den letzten Datensatz Anzeigen zu lassen.
Hier mal die Tabellen
tbl.Geraete
m_id [int] (PK)
inventar [varchar]
Preis
Bemerkung
...
tbl.Daten
m_id [int](FK)(PK)
DatumZeit [snaldatetime](PK)
BH1
BH2
BH3
BH4
Digi1
Digi2
Position
Speed
SQL:
Nun würde mir die Abfrage jedes Gerät mit jedem Datensatz Anzeigen.
Ich möchte aber gerne nur von jeder Maschiene den neusten (DatumZeit) Datensatz angezeigt bekommen.
ich versuche gerade eine Join mit 2 Tabellen auf zubauen und mir den letzten Datensatz Anzeigen zu lassen.
Hier mal die Tabellen
tbl.Geraete
m_id [int] (PK)
inventar [varchar]
Preis
Bemerkung
...
tbl.Daten
m_id [int](FK)(PK)
DatumZeit [snaldatetime](PK)
BH1
BH2
BH3
BH4
Digi1
Digi2
Position
Speed
SQL:
SELECT Geraete.Inventarnr ,DatumZeit,Bh1,Bh2,Bh3,Bh4,Digi1,Digi2,Position ,Speed FROM Daten JOIN Geraete ON Daten.m_id = Geraete.m_id Order BY DatumZeit
Ich möchte aber gerne nur von jeder Maschiene den neusten (DatumZeit) Datensatz angezeigt bekommen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 333356
Url: https://administrator.de/forum/sql-order-by-und-join-mit-2-tabellen-333356.html
Ausgedruckt am: 26.12.2024 um 14:12 Uhr
7 Kommentare
Neuester Kommentar
Das könnte z.B. so gehen:
Gut wäre es zu wissen welches SQL du einsetzt, vielleicht geht es auch eleganter.
SELECT Geraete.Inventarnr,DatumZeit,Bh1,Bh2,Bh3,Bh4,Digi1,Digi2,Position,Speed
FROM ( SELECT m_id,max(DatumZeit) AS DatumZeit FROM Geraete GROUP BY m_id ) t
INNER JOIN Geraete
ON t.m_id = Geraete.m_id
INNER JOIN Daten
ON t.m_id = Daten.m_id
AND t.DatumZeit = Daten.DatumZeit
ORDER BY Geraete.Inventarnr
Hallo!
Schau dir noch einmal die Syntax-Beschreibung von ORDER BY an. Da gibt es noch Parameter ASC und DESC für die Sortierreihenfolge.
In deinem Fall ist DESC (absteigende Sortierung) angebracht.
Weiter schau dir die Syntax-Beschreibung für LIMIT an.
Deine Abfrage könnte dann evtl. so aussehen:
Gruß
eisbein
Schau dir noch einmal die Syntax-Beschreibung von ORDER BY an. Da gibt es noch Parameter ASC und DESC für die Sortierreihenfolge.
In deinem Fall ist DESC (absteigende Sortierung) angebracht.
Weiter schau dir die Syntax-Beschreibung für LIMIT an.
Deine Abfrage könnte dann evtl. so aussehen:
SELECT Geraete.Inventarnr ,DatumZeit,Bh1,Bh2,Bh3,Bh4,Digi1,Digi2,Position ,Speed FROM Daten JOIN Geraete ON Daten.m_id = Geraete.m_id Order BY DatumZeit DESC LIMIT 1
Gruß
eisbein
Er möchte einen Datensatz pro Gerät, nicht nur einen Datensatz. LIMIT ist außerdem nicht in jedem SQL möglich.