Как сделать такой запрос ?

VEgor

Новичок
Как сделать такой запрос ?

Как сделать такой запрос ?

Есть таблица table

Структура
idcontext | params

в idcontext - хранится id обьекта, params - хранит параметр.
Может быть несколько записей с одинаковым idcontext и разным params

Пример:

10 | 15
10 | 17
10 | 20
10 | 22
10 | 256
11 | 22
11 | 256

И так далее.

Суть в том, мне нужно получить idcontext у которого параметр 15, 16, 17 (все три).
Можно ли это сделать одним запросом ?
 

VEgor

Новичок
Мне надо жесткое условие, получить idcontext где в этой таблице есть три записи с параметрами 15 17 20, обязательно должно быть имено три.
в вашем примере - будут выбраны все, у которых параметры или 15 или 17 или 18
 

Фанат

oncle terrible
Команда форума
будут выбраны все, у которых параметры или 15 или 17 или 18
а тебе надо все, у которых параметры или 15 и 17 и 18
ну и какая проблема перевести на английский?
 

VEgor

Новичок
Есть несколько десятков тысяч записек.
Мне надо, приведенная таблица - это связующая таблица, мне нужно получить idcontext имееющий в трех записей параметры строго 15 и 17 и 18
приведенные выше примеры выберут намного больше записей, нежели нужно.
спасибо
 

Фанат

oncle terrible
Команда форума
VEgor
ты англйский совсем не знаешь? даже на уровне "да-нет"?
 

VEgor

Новичок
знаю, но не могу понять как сделать это.
если приведете пример буду благодарен
спасибо.
 

the-web-coder

Guest
Фанат
А ты умеешь?
ПОДСКАЗЫВАЮ ОТВЕТ: ЛИМИТ 3!!!
Если мои мессаги удаляешь, то хоть сам человеку посоветуй!
 

vovik

Новичок
Может, так ?

PHP:
SELECT idcontext
FROM table
WHERE params IN (15, 16, 17)
GROUP BY idcontext
HAVING COUNT(DISTINCT params) = 3
К сожалению, под рукой нет мускула, чтобы проверить, но выглядит вроде адекватно.
 

chira

Новичок
VEgor

Код:
SELECT idcontext
FROM mytable
WHERE params IN (15,17,20) // три праметра указываешь в HAVING
GROUP BY idcontext
HAVING COUNT(DISTINCT params) = 3 // сколько параметров
на форуме часто задавался подобный вопрос
 
Сверху