Seite 1 von 1

[gelöst] SQL Befehl für einen datensatz mit kleineren Pk

Verfasst: Di, 06.09.2011 19:37
von juergen_w1987
Hallo Leute,

habe eine super große Abfrage und es scheitert an einem einfachen Punkt.
Tabelle Prüfdaten: Pk, TimeStamp, Gerätenummer(Fremdschlüssel)...
Tabelle Geräte: Gerätenummer (Primkey),.......
Ich will von der Prüfung eines Gerätes den aktuellen TimeStamp und den TimeStamp der vorherigen Prüfung (von dem Gerät) haben. Damit man sieht wann die letzte Prüfung dieses Geräts durchgeführt wurde

codeteile

Code: Alles auswählen

SELECT  "Prüfdaten"."TimeStamp", "Prüfdaten2"."TimeStamp", ....
FROM "Prüfdaten" AS "Prüfdaten", "Prüfdaten" AS "Prüfdaten2",......
WHERE "Prüfdaten2"."Gerätenummer"= "Prüfdaten"."Gerätenummer" AND  "Prüfdaten"."Pk">"Prüfdaten2"."Pk" AND "Prüfdaten"."CheckPk" =1 AND.....
CheckPk=1 ist für die auswahl nach welcher Prüfung abgefragt wird.
Nur Ich bekomm immer alle älteren Timestamps eines Gerätes. will aber nur den TimeStamp vor der ausgewählten Prüfung. Wie mach ich das???

mfg und danke

jürgen

Re: suche SQL Befehl für einen datensatz mit kleineren Pk

Verfasst: Mi, 07.09.2011 19:41
von DPunch
Aloha
juergen_w1987 hat geschrieben:Wie mach ich das???
Das Stichwort dazu ist "Korrelierte Unterabfrage".
In Deinem Fall dürfte das ungefähr so aussehen: (evtl Häkchen bei "SQL-Kommando direkt ausführen" setzen)

Code: Alles auswählen

SELECT
	"Prüfdaten"."TimeStamp",
	(SELECT "a"."TimeStamp" FROM "Prüfdaten" AS "a" WHERE "a"."Gerätenummer" = "Prüfdaten"."Gerätenummer" 
		AND "a"."TimeStamp" < "Prüfdaten"."TimeStamp" ORDER BY "a"."TimeStamp" DESC LIMIT 1)
		AS "VorherigePrüfung"
FROM
	"Prüfdaten" AS "Prüfdaten"
WHERE
	"Prüfdaten"."CheckPk" =1

Re: [gelöst] SQL Befehl für einen datensatz mit kleineren Pk

Verfasst: Do, 08.09.2011 10:42
von juergen_w1987
Danke dir vielmals funktioniert einwandfrei.
danke nochmals