Всем привет, друзья!
Как вы думаете, какие строки будут отобраны в результате следующего запроса: SELECT *
FROM VOUCHERS
WHERE CLIENT_ID = 1
AND DOC_TYPE = 2
OR FILIAL_ID = 3 те, где CLIENT_ID = 1 и ещё такие строки, где либо DOC_TYPE = 2 либо FILIAL_ID = 3 ИЛИ, ВСЁ ЖЕ, те, где CLIENT_ID = 1 и одновременно в столбце DOC_TYPE = 2 и ещё такие строки, где FILIAL_ID = 3 и не важно какой CLIENT_ID и DOC_TYPE? Здесь в силу вступает правило приоритета операторов. OR разделяет условия во WHERE на два: будут отобраны строки у которых CLIENT_ID = 1 и одновременно с этим в столбце DOC_TYPE = 2 и не важно какой FILIAL_ID. И потом к полученным данным ещё будут отобраны строки у которых FILIAL_ID = 3 вне зависимости от значений в других столбцах. Если нужно отобрать строки с CLIENT_ID = 1 и в дополнении у них должен быть либо DOC_TYPE = 2 либо FILIAL_ID = 3, то мы можем воспользоваться скобками: SELECT *
FROM VOUCHERS
WHERE CLIENT_ID = 1
AND (DOC_TYPE = 2 OR FILIAL_ID = 3) Д