Проверка нескольких условий (операторы OR и AND)
Если в предложение WHERE нужно проверить несколько условий, то для их соединения можно использовать логические операторы AND, OR и NOT.
Оператор AND объединяет два и более условий и возвращает истинное значение только при выполнении всех условий.
Найти в таблице tbl_clients данные о Bennett Sherry.
SQL:
SELECT * FROM tbl_clients
WHERE
lastname='Bennett' AND name='Sherry'
Найти данные о клиентах проживающих в Сиэтле и имеющих семьи численностью более 3-х человек:
SQL:
SELECT * FROM tbl_clients
WHERE region='Seattle' AND
fam_size>3
SQL:
SELECT * FROM tbl_clients
WHERE
region = 'Seattle' OR region='Los Angeles'
Получить список всех клиентов, кроме тех, кто проживает Лос-Анджелесе.
SQL:
SELECT * FROM tbl_clients
WHERE
region != 'Los Angeles'
Или
SQL:
SELECT * FROM tbl_clients WHERE NOT
region = 'Los Angeles'
Аналогично арифметическим операторам, логические операторы также выполняются в строго определенной последовательности. Если в выражении используется несколько логических операторов, они выполняются в следующей последовательности: сначала NOT, затем AND и, наконец, OR.
Вывести данные о всех клиентах, проживающих в Сиэтле и только о тех клиентах из Лос-Анджелеса, численность семьи которых превышает 3-х человек.
SQL:
SELECT lastname, name, region, fam_size
FROM tbl_clients
WHERE region= 'Seattle' OR region = 'Los Angeles' AND fam_size>3
Результат:
lastname | name | region | fam_size |
Stolz | Barbara | Seattle | 6 |
Abbott | Thomas | Seattle | 2 |
Vaughn | Jeffrey | Seattle | 2 |
Sperber | Gregory | Seattle | 3 |
Org | Liina | Los Angeles | 4 |
Reynolds | Christian | Los Angeles | 5 |
Salinas | Danny | Los Angeles | 5 |
Miller | Robert | Los Angeles | 4 |
Ausmees | Ingrid | Seattle | 6 |
Clark | Margaret | Los Angeles | 4 |
Philbrick | Penny | Seattle | 1 |
.... | ..... | ..... |
...
|
Ограничение на количество членов семьи в предыдущем запросе применяется только к клиентам из Лос-Анджелеса, так как оператор AND выполняется перед оператором OR. Чтобы первым выполнялся оператор OR, в запросе нужно использовать скобки.
В результате выполнения следующего запроса будут данные о всех клиентах из Сиэтла и Лос-Анджелеса, имеющих семьи численностью больше 3 человек:
SQL:
SELECT lastname, name, region, fam_size
FROM tbl_clients
WHERE (region= 'Seattle' OR region = 'Los Angeles') AND
fam_size>3