Есть две таблицы
1. Таблица записей
2. Таблица соответствий
В первой хранится информация вида:
id | title
------------
1 | Название
2 | Название 2
Во второй таблице данные такие:
lot_id | param_id | param_value
-------------------------------------
1 | 1 | 36
1 | 2| 54
Т.е в первой хранится список объявлений во второй связь объявлений и атрибутов.
Т.е это могут быть "размер обуви" или "обхват груди" или "рост","сезон" и так далее. Каждый такой параметр во второй таблице - это paran_id его значение - param_value
Например мне нужно выбрать все вещи размером 36
SELECT lots.id, params.param_id FROM lots AS lots LEFT JOIN lots_params AS params ON lots.id=params.lot_id WHERE (params.param_id=1 AND params.param_value=36) LIMIT 5
Все хорошо, записи находятся
Но если мне надо выбрать все вещи размером 36 и ростом 54
SELECT lots.id, params.param_id FROM lots AS lots LEFT JOIN lots_params AS params ON lots.id=params.lot_id WHERE (params.param_id=1 AND params.param_value=36) AND (params.param_id=2 AND params.param_value=54) LIMIT 5
Не находит ничего. (Хотя данные в базе есть, есть одно объявление у которого две записи в таблице с param_id=1 и param_value=36, param_id=2 и param_value=54
Если поставить OR - срабатывает на ура, но нужно не ИЛИ а именно И условие.