Hallo,
ich habe eine Abfrage (hier nur Vereinfacht dargestellt):
Diese muss ich jetzt erweitern. Ich muss erst in einer anderen Tabelle schauen, ob ich ein Ergebnis erhalte und dieses dann anstatt T1.EineSpalte einsetzen, ansonsten muss ich die T1.EineSpalte für das JOIN verwenden.
Folgende Abfrage geht auch schon:
Hier bekomme ich entweder den Wert aus T3.EineAndereSpalte oder (falls er nicht existiert) den Wert von T1.EineSpalte als "RichtigerWert".
In meiner Ursprungsabfrage möchte ich nun mit "RichtigerWert" weiterarbeiten.
Meine Idee währe
Der Hintergrund ist:
Wenn in der Tabelle T1 der Wert in EineSpalte geändert wird, wird diese Änderung in der Tabelle T3 (mit Datum) Festgehalten.
Wenn ich jetzt die Daten zu einem bestimmten Datum abrufe, muss ich natürlich erst in T3 schauen, ob nach diesem Datum noch eine Änderung stattfand. Wenn ja, muss ich den Wert aus T3.EineAndereSpalte nehmen, wenn nicht, den aus T1.EineSpalte.
gibt es eine Möglichkeit das so per SQL zu lösen?
ich habe eine Abfrage (hier nur Vereinfacht dargestellt):
Code:
SELECT * FROM T1 INNER JOIN T2 ON (T1.EineSpalte=T2.ID)
Folgende Abfrage geht auch schon:
Code:
IF (SELECT TOP (1) EineAndereSpalte FROM T3 WHERE ...)>0 BEGIN SELECT TOP (1) EineAndereSpalte AS RichtigerWert FROM T3 WHERE ... END ELSE BEGIN SELECT EineSpalte AS RichtigerWert FROM T1 WHERE ... END
In meiner Ursprungsabfrage möchte ich nun mit "RichtigerWert" weiterarbeiten.
Meine Idee währe
Code:
SELECT *, (IF (SELECT TOP (1) EineAndereSpalte FROM T3 WHERE ...)>0 BEGIN SELECT TOP (1) EineAndereSpalte AS RichtigerWert FROM T3 WHERE ... END ELSE BEGIN SELECT EineSpalte AS RichtigerWert FROM T1 WHERE ... END) AS RichtigerWert FROM T1 INNER JOIN T2 ON (RichtigerWert=T2.ID)
Wenn in der Tabelle T1 der Wert in EineSpalte geändert wird, wird diese Änderung in der Tabelle T3 (mit Datum) Festgehalten.
Wenn ich jetzt die Daten zu einem bestimmten Datum abrufe, muss ich natürlich erst in T3 schauen, ob nach diesem Datum noch eine Änderung stattfand. Wenn ja, muss ich den Wert aus T3.EineAndereSpalte nehmen, wenn nicht, den aus T1.EineSpalte.
gibt es eine Möglichkeit das so per SQL zu lösen?
