Как найти пункт двух значений в одном поле?

0

У меня 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 возвращает все записи, но мне нужны поисковые опоры для одного объекта.

Теги:
database

1 ответ

6

Вы должны использовать OR с скобками:

WHERE (p.name = 'views' AND op.value > 0)
   OR (p.name = 'draft' AND op.value = 1)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню