AND и OR в SQL PHP
Всем привет! Подскажите пожалуйста как в одном запросе sql php использовать и and и or (а именно, где or, отдельно от and надо брать в скобки или нет?
Если эти операторы встречаются в одном выражении, то сначала выполняется NOT, потом AND и в конце OR. Где бы они ни стояли.
Скобки нужны для изменения этой логики, ну или для лучшего визуального восприятия.
В зависимости от того, что вы хотите получить, вы можете использовать разный синтаксис SQL-запроса.
Например, вы хотите получить из таблицы people всех людей, которых зовут John, которые живут в США (USA) или Канаде (Canada):
SELECT * FROM `people` WHERE `name`='John' AND (`country`='USA' or `country`='Canada') В этом случае логика такая же, как в математике: действия в скобках выполняются первыми. Сначала СУБД выберет людей, которые живут в США или Канаде, а после – среди этих людей выберет тех, которых зовут Джон.
Если использовать конструкцию без скобок:
SELECT * FROM `people` WHERE `name`='John' AND `country`='USA' or `country`='Canada' то выборка будет выполняться по порядку написания условий, то есть сначала выполнится выборка "все с именем Джон И живущие в США", а после: "ИЛИ любой, кто живёт в Канаде".
Грубо: та же математика. Действия выполняются по порядку, но те, что в скобках – выполняются раньше. Если скобки внутри скобок – это ещё сильнее повышает приоритет выполнения операции.