У меня проблема с построением запроса, который бы дал мне уникальные строки. Ситуация такова:
У меня есть такой TABLE продукт:
id name price
==================
1 bolt 50
2 screw 4
3 hammer 40
4 drill 30
и TABLE products2tags вроде этого:
id id_product id_tag
=======================
1 1 1
2 2 1
3 2 2
4 2 3
5 3 3
В моем приложении я рендеринг список всех имеющихся продуктов, и я создаю фильтр, в котором пользователь должен иметь возможность выбрать ноль или несколько тегов и получить список всех продуктов, которым присвоен тег (есть строка с этим идентификатором продукта и идентификатором тега в таблице products2tags).
Запрос
SELECT *
FROM products AS p
JOIN products2tags AS p2t
ON p.id = p2t.id_product
WHERE IN p2t.id_tag in (1, 3);
работает, когда я выбираю только один тег в моем фильтре (поэтому в операторе WHERE есть один идентификатор тега. Когда я выбираю больше тегов Я все еще получаю результат, но я получаю несколько строк несколько раз - те, которым назначено несколько тегов.
Все, что мне нужно, - это получать уникальные строки при выборе более одного тега.
РЕДАКТИРОВАТЬ:
Ожидаемый результат запроса из таблиц выше:
p.id p.name p.price p2t.id p2t.id_product p2t.id_tag
==============================================================
1 bolt 50 1 1 1
2 screw 4 2 2 1 (only once)
4 drill 30 5 4 3