Ich habe 3 Variablen in meiner gespeicherten SQL-Prozedur und möchte nur dann einen Join hinzufügen, wenn die dritte Variable nicht null ist.SQL JOIN nur, wenn eine Bedingung wahr ist
Dies ist, wie ich es versuche, aber es funktioniert nicht. Es gibt die folgenden Fehler auf der Linie darauf hingewiesen:
falsche Syntax nahe '{'
ALTER PROCEDURE [dbo].[Search]
@one NVARCHAR(50), @two NVARCHAR(50), @three NVARCHAR(50)
SELECT cinfo.ID,
cinfo.Nam,
cinfo.INAM,
cinfo.CA,
cinfo.Form,
cinfo.Std,
cval.Prop,
cval.Cons,
sc.Accep
From dbo.Info AS cinfo
Inner JOIN dbo.values AS cval
ON cinfo.ID = cval.ID
INNER JOIN dbo.Sources AS sc
ON (cval.sID = sc.sID AND sc.Accept = 'A')
IF @three IS NOT NULL{ **<---------------------**
LEFT JOIN dbo.Synonym AS synm
ON cinfo.ID = synm.ID}
where (cinfo.NAM LIKE '%'[email protected]+'%' OR cinfo.CAS LIKE '%'[email protected]+'%' OR
synm.SynonymID LIKE '%'[email protected]+'%') AND
(cval.PropID = '1' OR
cval.PropID = '2' OR
cval.PropID = '3' OR
cval.PropID = '4' OR)
Sie können dies in 'TSQL' nicht tun. Allerdings können wir die Abfrage schreiben, um Ergebnisse in beiden Bedingungen zu erhalten –