Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.079 Beiträge
 
Delphi 12 Athens
 
#6

AW: Tabellen miteinander verknüpfen u. Queries geschickt formulieren

  Alt 21. Jul 2016, 15:56
Es muß natürlich nicht unbedingt "physisch" mit in die erste Tabelle rein und wenn doch, dann könnte man sich die zweite Tabelle auch sparen, da man deren Daten aus der Ersten auslesen könnte.
SQL-Code:
-- Onlinezeiten je als ein Datensatz, von Beginn bis Ende
SELECT Event, Date, Begin, Begin+Duration AS End, Duration, System FROM EventTabelle
UNION
SELECT '...', Date, Begin, End, End-Begin AS Duration, 'OnlinetimeAS System FROM OnlineTabelle
ORDER BY Date, Begin, End
oder
SQL-Code:
-- Onlinezeiten je als zwei Datensätze, für Beginn und Ende
SELECT Event, Date, Begin, Begin+Duration AS End, Duration, System FROM EventTabelle
UNION
SELECT '...', Date, Begin, Begin AS End, 0 AS Duration, 'OnlineAS System FROM OnlineTabelle
UNION
SELECT '...', Date, End AS Begin, End, 0 AS Duration, 'OfflineAS System FROM OnlineTabelle
ORDER BY Date, Begin, End
Beim Berechnen müsstest du dann nur mit überschneidenden Zeiten bissl aufpassen, also wo zwei Events übereinander liegen, vorallem bezüglich der "Online"-Zeiten, im ersten Beispiel.

Bezüglich der Duration müsste man noch aufpassen, dass hier auch mit der richtigen Zeiteinheit verrechnet wird, da das ja nur Integer sind und es Stunden/Minuten/Sonstwas sein könnten,
also vermutlich sowas wie (Begin + CAST(Duration || ' minsAS INTERVAL)) AS End .

Im UNION SELECT muß das "... AS Feldname" nicht angegeben werden, aber man darf. (es werden die Namen des ersten SELECT in der Ausgabe stehen)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (21. Jul 2016 um 16:00 Uhr)
  Mit Zitat antworten Zitat