Нужна помошь по SQL запросу

Lord Maverik
На сайте с 15.04.2003
Offline
471
597

И так у меня есть запрос


SELECT cl.`name` , cl.`url` , cl.`id` , cl.`short`
FROM `catalog_list` AS cl, `catalog_list_pars` AS cp
WHERE cl.`actv` = '1'
AND cl.`id` = cp.`id_list`
AND
(
cp.`id_pars` = '1'
AND cp.`value` = '1'
)
AND (
cp.`id_pars` = '3'
AND cp.`value` = '93'
)
GROUP BY cl.`id`
ORDER BY cl.`name`

В общем проблема в следующем. Есть таблица с записями. Есть таблица с параметрами. Из запроса все это видно.

Одной записи в таблице с записями может соответствовать несколько записей в таблице параметров. Надеюсь понятно объяснил.

Это запрос для поиска. Так вот, когда параметр 1 - все чудно.

Но когда их 2, ума не приложу как составить запрос. В данном примере параметра 2.

И получается, одна строка не может ведь быть одновременно и параметром 1 и параметром 2.

Т.е. получается мне нужно. Сделать выборку по таблице параметров, из строк где участвуют только нужные комбинации. Далее выбрать все из первой таблицы и только то, где присутствует ID записи из предыдущей выборки. И все это одним запросом.

Помогите, а кто может :)

Чую тут "join" надо, или что-то в этом духе, но составить запрос сам не могу :(

RedMall.Ru (https://redmall.ru) - Товары из Китая (Таобао, Tmall) с проверкой качества, скидка для форумчан 7% Партнерская программа 2 уровня: 5% + 5%. Подробнее. (https://redmall.ru/about/partner/)
Shtogrin
На сайте с 02.11.2006
Offline
95
#1

недавно было похожее

/ru/forum/202197

www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
S
На сайте с 13.07.2007
Offline
56
#2

Похоже нужно не join, а exists. В exists пишите запрос (select) на выборку необходимых параметров. Будет что-то типа select * from table1 t1 where exists (select 1 from table2 t2 where t1.id_par=t2.id_param_1 or t1.id_par=t2_id_param_2).

Lord Maverik
На сайте с 15.04.2003
Offline
471
#3

Shtogrin, спасибо, помогло

solnikolay, неверно, нужно не "или", а "и" - получаем теже грабли.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий