SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 16.10.2010 15:59:15

michail
Участник
Зарегистрирован: 16.10.2010
Сообщений: 2

помогите составить запрос

Доброго времени суток, All !

помогите составить запрос к таблице

Код:

+----+------------+----------+
| id | product_id | param_id |
+----+------------+----------+
|  1 | 1          |  10      |
|  2 | 1          |  11      |
|  3 | 1          |  12      |
|  4 | 1          |  5       |
|  5 | 2          |  10      |
|  6 | 2          |  11      |
|  7 | 2          |  13      |
|  8 | 2          |  15      |
|  9 | 3          |  10      |
| 10 | 3          |  11      |
+----+------------+----------+

нужно получить уникальные значения product_id соответствующий выборке

param_id = 10 AND param_id = 11 AND param_id = 15

Неактивен

 

#2 16.10.2010 16:51:05

michail
Участник
Зарегистрирован: 16.10.2010
Сообщений: 2

Re: помогите составить запрос

решение было найдено

SELECT t.product_id
FROM t
WHERE t.param_id IN(10, 11, 15)
GROUP BY t.product_id
HAVING COUNT(*) = 3

Неактивен

 

#3 16.10.2010 18:53:52

nikolajtesla
Завсегдатай
Зарегистрирован: 12.10.2010
Сообщений: 25

Re: помогите составить запрос

Не пойму к чему тут count и group???

SELECT DISTINCT product_id
FROM tbl_name
WHERE param_id IN (10,11,15)

Неактивен

 

#4 17.10.2010 12:28:07

savit
Завсегдатай
Зарегистрирован: 10.11.2009
Сообщений: 25

Re: помогите составить запрос

michail написал:

решение было найдено

SELECT t.product_id
FROM t
WHERE t.param_id IN(10, 11, 15)
GROUP BY t.product_id
HAVING COUNT(*) = 3

при таком запросе всегда будет temporary table + filesort
от filesort можно избавиться добавив ORDER BY NULL

лучше джойнить таблицу необходимое кол-во раз

Неактивен

 

#5 18.10.2010 17:58:56

diter98
Участник
Зарегистрирован: 11.12.2008
Сообщений: 2

Re: помогите составить запрос

nikolajtesla написал:

Не пойму к чему тут count и group???

SELECT DISTINCT product_id
FROM tbl_name
WHERE param_id IN (10,11,15)

Видимо, потому что нужно выбрать продукт, у которого есть три параметра с param_id 10, 11 и 15.
А в Вашем случае получается, что будут выбраны продукты, у которых есть по крайней мере один из выше указанных параметров.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson