Я пытаюсь изменить мое предложение WHERE на основе значения одного столбца моей таблицы.Мои таблицы:
server_updates
k1ID updID
----------- -----------
server_updates_cat
sucID updID catID selectChildren includeNullType
----------- ----------- ----------- ---------------- --------------
server_updates_types
sucID typeID
----------- -----------
И вот что я делаю:
DECLARE @k1_catID INT
DECLARE @k4_type INT
SET @k1_catID = 30
SET @k4_type = 1
SELECT suc.sucID, suc.updID FROM server_updates su
INNER JOIN server_updates_cat suc ON suc.updID = su.updID
WHERE
includeNullType = 0
AND suc.catID = @k1_catID
AND selectChildren = 1
AND @k4_type IN (SELECT typeID FROM server_updates_types sut WHERE sut.sucID = suc.sucID)
OR
includeNullType = 1
AND KSUC.catID = @k1_catID
AND selectChildren = 1
AND (@k4_type IN (SELECT typeID FROM server_updates_types sut WHERE sut.sucID = suc.sucID) OR @k4_type IS NULL)
Мне бы не хотелось повторять все условия либо includeNullType = 0
, либо includeNullType = 1
, но изменить только то, что ядействительно нужно изменить, что:
@k4_type IN (SELECT typeID FROM server_updates_types sut WHERE sut.sucID = suc.sucID)
Есть ли другой способ сделать это?