![]() |
Datenbank: SQLite • Version: 3.x • Zugriff über: C#
SQL: Neueste Daten einer bestimmten Serien-Nr. ermitteln
Hallo zusammen,
ich habe eine Tabelle in der Art:
Code:
Nun möchte ich für jede Serien-Nr. je den neuesten Datensatz.
Datum/Zeit Serien-Nr. Wert1 Wert2 ...
12.01.15, 14:43 12345 a b 12.01.15, 14:43 98765 a b 12.01.15, 14:44 12345 c d 12.01.15, 14:47 12345 e f 12.01.15, 14:49 98765 c d ... In dem Fall 2 Datensätze:
Code:
Ich habe es über "GROUP BY Serien_Nr ORDER BY Datum DESC" versucht, aber das gibt mir seltsame Daten zurück. ;)
12.01.15, 14:47 12345 e f
12.01.15, 14:49 98765 c d Wie geht's richtig? Grüße Matze |
AW: SQL: Neueste Daten einer bestimmten Serien-Nr. ermitteln
EDIT:
SQL-Code:
Hier stand vorher Murks, weil ich die Frage falsch gelesen haben bzw. nur zur Hälfte.
select y.* from Tabelle y
join (select SerienNummer , max(Datum) as MaxDatum from Tabelle group by SerienNummer ) x on x.Seriennummer = y.Seriennummer and x.MaxDatum = y.Datum |
AW: SQL: Neueste Daten einer bestimmten Serien-Nr. ermitteln
Ich würde es so versuchen:
SQL-Code:
oder so:
SELECT
* FROM Tabelle X WHERE Datum = ( SELECT MAX(Datum) FROM Tabelle WHERE Seriennummer = X.Seriennummer)
SQL-Code:
SELECT
* FROM Tabelle X GROUP BY Seriennummer HAVING Datum = ( SELECT MAX(Datum) FROM Tabelle WHERE Seriennummer = X.Seriennummer) |
AW: SQL: Neueste Daten einer bestimmten Serien-Nr. ermitteln
Die zweite Query läuft? Müssen nicht alle Felder entweder in der "Group by" Klausel oder als Aggregat auftauchen :gruebel:
|
AW: SQL: Neueste Daten einer bestimmten Serien-Nr. ermitteln
Du hast Recht
SQL-Code:
ist eigentlich immer der Todesstoß für Aggregate etc.
select *
Nemen wir den * als Platzhalter für feld1..feldn . Gruß K-H |
AW: SQL: Neueste Daten einer bestimmten Serien-Nr. ermitteln
Vielen Dank für die zahlreichen Vorschläge! :thumb:
Wo ich das hier sehe, kommt mir, dass ich fast das gleiche hier schonmal gefragt habe. :wall: Bei Sub-Selects tu ich mich irgendwie echt schwer von der Vorstellung, was da genau passiert, weil im Prinzip 2 Queries programmiert werden, aber die innere mehrfach mit verschiedenen Parametern ausgeführt wird. Zitat:
Matze |
AW: SQL: Neueste Daten einer bestimmten Serien-Nr. ermitteln
In diesem Fall nicht, es wird ein Datum ermittelt, mit welchem dann die äussere Abfrage durchgeführt wird.
|
AW: SQL: Neueste Daten einer bestimmten Serien-Nr. ermitteln
Zitat:
|
AW: SQL: Neueste Daten einer bestimmten Serien-Nr. ermitteln
DeddyH's Abfrage funktioniert, hätte ich nicht gedacht.
Meine auch, nach einem kleinen Edit (nur die Tabelle anzeigen, nicht das verjointe Zeugs) Allerdings haben beide den Nachteil, das doppelte Zeilen angezeigt werden, wenn es zu einer SN für das aktuellste Datum zwei Einträge gibt. Da ist dann eine windowing-Funktion besser. |
AW: SQL: Neueste Daten einer bestimmten Serien-Nr. ermitteln
So ist das Verfahren definitiv nicht wirklich stabil. Je nach Auflösung des Datum-Felds und Frequenz der Seriennummer-Vergabe kommt man an den Punkt, wo es Überschneidungen gibt. Hier sollte das Design auf jeden Fall überarbeitet werden.
Eine Möglichkeit wäre eine zusätzliche AutoIncrement-Spalte - ohne das System und seine Funktionsweise aber genau zu kennen, kann man hier keine vernünftige Aussage treffen, ausser es sollte etwas anders werden :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz