Ankündigung

Einklappen
Keine Ankündigung bisher.

MSSQL Abfrage mit if

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MSSQL Abfrage mit if

    Hallo,
    ich habe eine Abfrage (hier nur Vereinfacht dargestellt):
    Code:
    SELECT * FROM T1 INNER JOIN T2 ON (T1.EineSpalte=T2.ID)
    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:
    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
    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
    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)
    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?
Lädt...
X