У меня 3 таблицы
объекты
ID || NAME
====================
1 || object title
--------------------
2 || name of object
etc..
реквизит
ID || NAME
===========
1 || draft
-----------
2 || views
etc..
obj_props
ID || OID || PID || VALUE
=========================
1 || 1 || 1 || 1
-------------------------
1 || 1 || 2 || 70
etc..
Мне нужно выбрать записи, где draft = 1 и views> 0.
Мой текущий запрос mysql:
SELECT o.id, p.name as prop_name, op.value as prop_val
FROM objects o
INNER JOIN obj_props op ON o.id = op.object_id
INNER JOIN props p ON p.id = op.prop_id
WHERE p.name = 'views' and op.value > 0
но когда я добавил
AND p.name = 'draft' and op.value = 1
он возвращает null.
Если оператор replace AND с кодом OR возвращает все записи, но мне нужны поисковые опоры для одного объекта.
Вы должны использовать OR
с скобками:
WHERE (p.name = 'views' AND op.value > 0)
OR (p.name = 'draft' AND op.value = 1)