Выполнить второе условие WHERE, только если первое условие WHERE не удовлетворяет - PullRequest
0 голосов
/ 25 мая 2018

У меня есть набор условий WHERE, и мое требование: условие2 должно выполняться только после того, как условие 1 не выполнено, ниже мой запрос

SELECT (B.col1, B.col2, B.col3)
FROM
(SELECT firstname, lastname FROM employee) A
INNER JOIN
(SELECT col1, col2, col3 FROM office) B
ON 
TRIM(A.firstname) = TRIM(B.col1) AND 
INNER JOIN 
(SELECT col4, col5, col6 FROM school) C
ON
TRIM(A.firstname) = TRIM(C.col4) 
WHERE (condition1) OR (condition2) OR (condition3) OR (condition4) OR (condition5) OR (condition6);

1 Ответ

0 голосов
/ 25 мая 2018

Вам понадобятся отдельные запросы.Это можно сделать одним запросом, но это будет чрезвычайно сложно и, вероятно, крайне неэффективно.Чтобы дать краткий пример такого (ужасного) запроса для справки:

SELECT [stuff]
FROM [stuff2: tables, joins, etc....]
WHERE [condition1]
   OR ([condition2] AND NOT EXISTS (SELECT * FROM [stuff2... yes, copy everything from the first stuff2] WHERE [condition1]))
   OR ([condition3] AND NOT EXISTS (SELECT * FROM [stuff2] WHERE [condition1] OR [condition2]))
   OR ([condition4] AND NOT EXISTS (SELECT * FROM [stuff2] WHERE [condition1] OR [condition2] OR [condition3]))
   and so on...

Так что просто запрашивайте каждое такое условие отдельно, пока не получите результаты или не выполните условия для проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...