У меня есть простое требование, но я не могу правильно сформулировать оператор SELECT, чтобы он дал желаемый результат.
У меня есть две таблицы: -
- Персональная таблица с ID и другой разной информацией
- Таблица лицензий с идентификатором для подключения и несколькими записями на человека (10-15)
Моя цель - получить всех людей с синей лицензией и белой лицензией (например).
Использование:
SELECT distinctrow person.ID AS client_ID, postcode, locality
FROM (person INNER JOIN licences ON person.ID = licences.client_ID)
WHERE licence LIKE '%Blue%' **OR** licence LIKE '%White%'
конечно, мне возвращаются люди, у которых есть, а НЕ оба.
Использование:
SELECT distinctrow person.ID AS client_ID, postcode, locality
FROM (person INNER JOIN licences ON person.ID = licences.client_ID)
WHERE licence LIKE '%Blue%' **AND** licence LIKE '%White%'
конечно не возвращает результатов (как это могло быть?).
Это действительно упрощенный пример, так как я собираю 5 таблиц во вложенном JOIN, для которых у всех есть критерии (входящие в 40 с лишним переменных $ _GET!) ... но это то, где я застрял. Я использовал И в ВНУТРЕННЕМ СОЕДИНЕНИИ, а не ГДЕ, без каких-либо изменений в результате. Я выпил много пива, все еще без изменений:)
Я знаю, что раскрываю свое незнание даже основ, но, конечно, мне не нужно помещать SELECT в SELECT? Может быть, влево или вправо?
Я чувствую, что собираюсь изучить кое-что элементарное здесь, так что включите это!