So ich habe es hin bekommen! Mit folgenden Code klappt es
Code: Alles auswählen
SELECT "Wormhole"."Wormhole-ID", "b"."Ort", DATEDIFF( 'dd', "b"."Sternzeit", CURRENT_TIMESTAMP ) AS "Zeit sein Scan [Tage]" FROM "Wormhole", ( SELECT * FROM "Datalog" JOIN ( SELECT "Datalog"."Wormhole" AS "hole", MAX( "Datalog"."Sternzeit" ) AS "SZeit" FROM "Datalog" GROUP BY "Datalog"."Wormhole" ) AS "a" ON "Datalog"."Sternzeit" = "a"."SZeit" ) AS "b" WHERE "Wormhole"."Wormhole-ID" = "b"."Wormhole"
Ich werde mal zur späteren Verständlichkeit aufdrösseln was ich gemacht habe:
1. Aktuelle Wurmlöcher suchen mit
Code: Alles auswählen
SELECT "Datalog"."Wormhole" AS "hole", MAX( "Datalog"."Sternzeit" ) AS "SZeit" FROM "Datalog" GROUP BY "Datalog"."Wormhole"
Damit erhält man eine logische (virtuelle) Tabelle mit den Spalten "hole" und "SZeit" mit den aktuellsten Datensatz eines Wurmloches. Man muss die Namen ändern, da es sonst im letzten Schritt zu Fehlern kommt.
2. Wir möchten ja nicht nur den Namen und das Datum eines Wurmloches haben, sondern auch alle Daten aus der Tabelle "Datalog". Dies bekommen wir mit
Code: Alles auswählen
SELECT * FROM "Datalog" JOIN ( SELECT "Datalog"."Wormhole" AS "hole", MAX( "Datalog"."Sternzeit" ) AS "SZeit" FROM "Datalog" GROUP BY "Datalog"."Wormhole" ) AS "a" ON "Datalog"."Sternzeit" = "a"."SZeit"
oder zum bessern durch blick
Code: Alles auswählen
SELECT * FROM "Datalog" JOIN (1. Schritt) AS "a" ON "Datalog"."Sternzeit" = "a"."SZeit"
Wir erhalten eine logische Tabelle, die aus Datensätzen besteht welche die gleiche Sternzeit (Primärschlüssel, eindeutig) haben. Durch die bequeme Verwendung von * bekommen wir jetzt den Namen sowie die Sternzeit doppelt, daher die Namensänderung bei Schritt 1.
Zum Schluss erhalten wir obiges Konstrukt oder kurz
Code: Alles auswählen
SELECT "Wormhole"."Wormhole-ID", "b"."Ort", DATEDIFF( 'dd', "b"."Sternzeit", CURRENT_TIMESTAMP ) AS "Zeit sein Scan [Tage]" FROM "Wormhole", (2. Schritt) AS "b" WHERE "Wormhole"."Wormhole-ID" = "b"."Wormhole"
bzw. allgemein
Code: Alles auswählen
SELECT "Spalte" FROM "Tabelle", (2. Schritt) AS "b" WHERE "Tabelle"."Wormhole-ID" = "b"."Wormhole"