Проблема выборки в одной таблице

mysql_quest

Новичок
Всем привет!
Помогите разобраться с запросом.
Есть таблица:

id | id_tovar | id_value
1_|___10___|__12
2_|___11___|__24
3_|___10___|__35
4_|___12___|__19
5_|___13___|__12
..
..
Нужно выбрать такой id_tovar (ID товара), при котором id_value будет равным и 12, и 35
Как видно из примера, именно id_tovar со значением "10" соответствует ожиданием.
В общем, нужно выбрать товары, где строго есть и такой-то id_value, и такой-то id_value, и такой-то..

Вариант: SELECT id_tovar FROM `table1` WHERE id_value IN (12, 35) не подходит, потому как в основе его лежит выбор товара с id_value ИЛИ 12, ИЛИ 35. А нужно И 12, И 35.

Помогите разобраться, возможно выход прост и на поверхности.
Спасибо
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Код:
select * from quest q1 join quest q2 on q1.id_tovar=q2.id_tovar AND q1.id_value=12 and q2.id_value=35;
 

mysql_quest

Новичок
Народ, всем спасибо!
Помог ответ от "c0dex", спасибо!
select * from quest q1 join quest q2 on q1.id_tovar=q2.id_tovar AND q1.id_value=12 and q2.id_value=35;
Вопрос такой: а если три и более значений нужно выбрать, то такая картина?
select q1.id_tovar
from table1 as q1
join table1 as q2
join table1 as q3
on
q1.id_tovar = q2.id_tovar
and
q2.id_tovar = q3.id_tovar
and
q1.id_value = 22
and
q2.id_value = 4
and
q3.id_value = 5
group by q1.id_tovar
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Если три, то надо три джоина и три условия, тут уместно писать конструктор запроса.

как вариант:
Код:
select q1.id_tovar, count(id) as cnt from quest q1 where id_value IN (12, 35) GROUP BY id_tovar HAVING cnt >= 2;
 
Сверху