Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 помогите с запросом  [new]
xunder
Member

Откуда:
Сообщений: 20
Вот запрос

SELECT distinct p.products_id, pd.products_description FROM products AS p LEFT JOIN products_description AS pd ON (p.products_id = pd.products_id) LEFT JOIN products_attributes AS pa ON (p.products_id = pa.products_id) LEFT JOIN products_options_values AS pov ON (pa.options_values_id = pov.products_options_values_id) WHERE p.products_status = '1' AND pd.language_id = '1' AND pa.options_values_id='11' AND pa.options_values_id='12'

В таблице products_attributes есть строки с одним и тем же products_id и разными options_values_id. Мне нужно выбрать такой products_id, которому соответствует набор options_values_id (например pa.options_values_id='11' AND pa.options_values_id='12'). Если выбираю один options_values_id, то всё работает, если больше, то ничего не выводит
2 сен 09, 15:21    [7608815]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
xunder
Member

Откуда:
Сообщений: 20
Вот таблица http://clip2net.com/page/m0/1759232
2 сен 09, 15:27    [7608862]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
AND pa.options_values_id in ( '11' , '12') ?
-------------------------------------
Jedem Das Seine
2 сен 09, 15:29    [7608877]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Рострига Артур
Member

Откуда:
Сообщений: 200
xunder,

а пробывал
SELECT distinct p.products_id, pd.products_description FROM products AS p LEFT JOIN products_description AS pd ON (p.products_id = pd.products_id) LEFT JOIN products_attributes AS pa ON (p.products_id = pa.products_id) LEFT JOIN products_options_values AS pov ON (pa.options_values_id = pov.products_options_values_id) WHERE p.products_status = '1' AND pd.language_id = '1' AND pa.options_values_id in ('11','12')
или надо выбрать записи у которых есть и 11 и 12?
2 сен 09, 15:29    [7608879]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
xunder
Member

Откуда:
Сообщений: 20
уже лучше, по ...pa.options_values_id in ('11','12') он выдаёт 2 продукта (у 1-го первого есть свойства 11 и 12), а у 2-го только 12, а должен быть только 1-й продукт
2 сен 09, 15:41    [7608972]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
xunder
Member

Откуда:
Сообщений: 20
Да надо выбрать записи у которых и 11 и 12
2 сен 09, 15:45    [7609002]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
xunder
Да надо выбрать записи у которых и 11 и 12
Вот Вы сами написали
AND pa.options_values_id='11' AND pa.options_values_id='12'
Интересно, на месте сервера Вы что бы вернули в качестве резалтсета?

Сформулируйте задачу по-русски, пожалуйста.
И пользуйтесь тегом [SRС]
2 сен 09, 15:54    [7609037]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Рострига Артур
Member

Откуда:
Сообщений: 200
xunder,

а если так
AND (pa.options_values_id='11' AND pa.options_values_id='12')
2 сен 09, 15:55    [7609045]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
iljy
Member

Откуда:
Сообщений: 8711
xunder,

одновременно в одном поле?? Вы ничего не перепутали?;)

pa.options_values_id='11' AND pa.options_values_id='12'


может все-таки так?
pa.options_values_id='11' OR pa.options_values_id='12'
или так, то же самое, но компактнее
pa.options_values_id in ('11','12')
2 сен 09, 15:56    [7609051]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Рострига Артур
xunder,

а если так
AND (pa.options_values_id='11' AND pa.options_values_id='12')
2 сен 09, 15:57    [7609053]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iljy
xunder,

одновременно в одном поле?? Вы ничего не перепутали?;)
Подозреваю, что речь идёт об одном поле, но о разных записях. Тут EXISTS нужен.
2 сен 09, 15:58    [7609065]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
xunder
Member

Откуда:
Сообщений: 20
Вот структура таблицы. Одному products_id соответсвует набор свойств options_values_id. Нужно чтобы при поиске он искал продукт с набором выбранных свойств. Если указываю ...AND ( pa.options_values_id='4' AND pa.options_values_id='5' ) продукт, имея эти свойства, не выводится

К сообщению приложен файл. Размер - 0Kb
2 сен 09, 16:09    [7609145]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
iljy
Member

Откуда:
Сообщений: 8711
xunder,
так бы сразу

SELECT p.products_id, pd.products_description
 FROM products AS p LEFT JOIN products_description AS pd ON (p.products_id = pd.products_id)
	 LEFT JOIN products_attributes AS pa ON (p.products_id = pa.products_id) 
	LEFT JOIN products_options_values AS pov ON (pa.options_values_id = pov.products_options_values_id)
WHERE p.products_status = '1' AND pd.language_id = '1'
GROUP BY p.products_id, pd.products_description
HAVING count(case when pa.options_values_id='11' then 1 end) >0 AND
	   count(case when pa.options_values_id='12' then 1 end) >0
2 сен 09, 16:16    [7609184]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
xunder
Member

Откуда:
Сообщений: 20
iljy, спасибо большое. заработало!
2 сен 09, 16:32    [7609291]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить