При построении запроса с серией таких or
всегда соблюдайте осторожность, заключая в скобки ваши условия OR
, иначе вы отмените условия AND
.
Пример:
SELECT *
FROM users
WHERE type='teacher'
дает только учителя.
SELECT *
FROM users
WHERE type='teacher'
AND name like '%Joe%'
Это дает только учителям с "Джо" где-то на их имя.ОДНАКО:
SELECT *
FROM users
WHERE type='teacher'
AND name like '%Joe%'
OR name like '%Mary%'
Можно ожидать, что это даст учителям, которых зовут «Джо» или «Мэри» ... но это не так.Это даст вам ЛЮБОГО пользователя, которого зовут "Мэри".Чтобы исправить это, вы используете скобки:
SELECT *
FROM users
WHERE type='teacher'
AND
(name like '%Joe%'
OR name like '%Mary%')