Вопрос по выборке

Benderlio

Новичок
Вопрос по выборке

Есть две таблицы
model
-------
model_id
rules_list_to_rules_id

и

rules_list_to_rules
-----------------------
rules_list_to_rules_id
rules_list_id

т.е. есть модель чего либо(model_id), и во 2-й таблице параметры этой модели (rules_list_id)
необходимо выбрать модели с заданными параметрами, например с 4-мя параметрами.
select model.model_id
from model
join rules_list_to_rules on model.rules_list_to_rules_id=rules_list_to_rules.rules_list_to_rules_id
where rules_list_id in (дипазон значений)
group by model_id
такая выборка выбирает если удовлетворяет хотя бы одному значению из in (дипазон значений), а как сделать что бы всем, т.е. своего рода and ?
 

Bitterman

Новичок
http://phpclub.ru/talk/showthread.php?s=&threadid=97603&rand=2
Количество LEFT JOIN равно количеству параметров, по которым ты хочешь осуществить выборку.
Подойдет?
 

chira

Новичок
Benderlio
Код:
select model.model_id
from model
INNER join rules_list_to_rules on model.rules_list_to_rules_id=rules_list_to_rules.rules_list_to_rules_id
where rules_list_id in (5,7,17,1237)
group by model_id
HAVING COUNT(DISTINCT rules_list_id) = 4 -- четыре значения (5,7,17,1237)
 

Benderlio

Новичок
chira
спасибо получилось...
Bitterman
спасибо... но не совсем разобрался
делаю так, результат пусто... вероятно что то не так написал
select model_id,d1.rules_list_id
from model_to_rules_list as i
left join rules_list_to_rules as d1 on d1.rules_list_to_rules_id=i.rules_list_to_rules_id
left join rules_list_to_rules as d2 on d2.rules_list_to_rules_id=i.rules_list_to_rules_id
left join rules_list_to_rules as d3 on d3.rules_list_to_rules_id=i.rules_list_to_rules_id
where d3.rules_list_id=125 and d2.rules_list_id=120 and d1.rules_list_id=143
 

Bitterman

Новичок
Benderlio
На первый взгляд все вроде верно написано, не знаю в чем дело. Если интересно разобраться, то убери условие WHERE и посмотри, что тебе возвратится.
 
Сверху