Есть ли лучший запрос для решения этой проблемы?
1 Автомобиль имеет много типов.
Я хочу что-то вроде этого: (ps это неверно, я знаю)
select * from car join type on car.id = type.id_car
where type = 'SUV'
and type = '4x4'
and (type = 'blue' or type = 'red')
and type = 'US'
and (type = 'Manual' or type = 'Automatic' or 'SemiAutomatic')
and type = 'diesel' and so on.
Мое решение:
select * from car
where numberOfANDType = (select count(1) from Type where car.id = type.id_car and type in ('suv', '4x4', 'us', 'diesel'))
and exists (select 1 from type where car.id = type.id_car and type in ('blue', 'red'))
and exists (select 1 from type where car.id = type.id_car and type in ('manual', 'automatic' or 'SemiAutomatic');
И т. Д.
пс: Я знаю число условий, используемых с ANDPS2: эти условия являются динамическими.
Anywayz: у меня есть для каждого типа столбца GROUP, и для типов, используемых в группах ИЛИ, у меня есть то же значение в этом столбце.Внедорожник имеет GROUP = 1, синий имеет GROUP = 2, красный имеет GROUP = 2 и так далее.Поэтому я делаю запрос к столбцу TYPE и счету в группе, чтобы увидеть, охвачены ли все группы.
Select id from car join type on .. where type in ('SUV', 'blue', 'red') group by id having count(distinct group) > 2;
Спасибо.
ps3: спасибо всем, ктоотклонил этот вопрос, вы очень добры.