Есть sql запрос:
SELECT * FROM tb_products p
LEFT JOIN tb_cities c ON p.city_id=c.id
WHERE c.city_id IN (1, 3, 6)
Но мне нужно чтобы из выбранных 3 идентификаторов (1, 3, 6), выбрались все перечисленные, а не только любой из них.
То есть в таблице tb_cities есть несколько записей с одним и тем же продуктом но с разными городами. Мне нужно чтобы продукы были в городах с id: 1, 3, 6; то есть IN (1, 3, 6), а не продукты которые есть в одной из этих городов.
Если я не ясно объяснил то прошу напишите
Так как структура таблицы не предоставлена, запрос будет примерно такой:
SELECT p.product_id
FROM tb_products p
JOIN tb_cities c ON p.city_id=c.id
WHERE c.id IN (1, 3, 6)
GROUP BY p.product_id
HAVING count(distinct c.id) = 3
Что получается - присоединяем таблицу с городами и продуктами, указываем, чтобы продукты были только в 3-х городах и смотрим, сколько уникальных городов есть для каждого продукта. Если три города - значит продукт есть и в 1, и в 3, и в 6.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей