Ich habe ein Problem mit einer Ansicht, die ich erstellen möchte. Ich habe zwei Tabellen, die über einen Left Outer Join verbunden sind, z.B. tableA
y tableB
, wobei tableB
ist links außen verbunden.
Ich möchte nur die Zeilen aus Tabelle B auswählen, in denen state gleich 4 ist, also füge ich hinzu WHERE state = 4
auf meine Anfrage. Jetzt ist die Ergebnismenge ziemlich beschnitten, weil alle Zeilen ohne eine passende Zeile in tableB
werden aus dem Ergebnis entfernt (da der Zustand für diese Zeilen nicht 4 ist). Ich habe auch versucht WHERE state = 4 OR state IS NULL
funktioniert ebenfalls nicht (da state
ist technisch nicht NULL
wenn es keinen Zustand gibt).
Was ich also brauche, ist eine WHERE
Anweisung, die nur ausgewertet wird, wenn es tatsächlich eine Zeile gibt, gibt es so etwas?
Wenn nicht, sehe ich zwei Möglichkeiten: join (SELECT * FROM tableB WHERE state = 4)
anstelle von Tabelle B, oder erstellen Sie einen View mit demselben WHERE
Anweisung und verbinden Sie diese stattdessen. Was ist die beste Option in Bezug auf die Leistung?
Dies ist übrigens SQL Server 2008 R2.