Существует таблица продуктов и таблица тегов продуктов.
Попытка выбрать все продукты, которые имеют все теги.Поэтому, когда пользователь уточняет свой поиск, он получает продукты только со всеми тегами.
tag
id PID tag
------------------------------
0c212c04_Gold 0c212c04 Gold
0c212c04_500g 0c212c04 500g
0c212c04_Coin 0c212c04 Coin
Сначала я попробовал OR
и IN
, но это вернуло все результаты.Даже если у них был только один из обязательных тегов
SELECT DISTINCT p.*
FROM products p
INNER JOIN product_tags pt ON (p.PID = pt.PID)
WHERE pt.tag = 'Gold' OR pt.tag = '10oz' AND p.RRP BETWEEN 0 AND 1000000
SELECT DISTINCT p.*
FROM products p
INNER JOIN product_tags pt ON (p.PID = pt.PID)
WHERE pt.tag IN ('Gold','10oz') AND p.RRP BETWEEN 0 AND 1000000
, поэтому я попытался AND
, который возвращает 0 результаты.
SELECT DISTINCT p.*
FROM products p
INNER JOIN product_tags pt ON (p.PID = pt.PID)
WHERE pt.tag = 'Gold' AND pt.tag = '10oz' AND p.RRP BETWEEN 0 AND 1000000
Как вернуть все продукты, которые имеют несколько тегов Gold
и 10oz
и Coin
?