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

  • Автор темы Автор темы VEgor
  • Дата начала Дата начала

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 (все три).
Можно ли это сделать одним запросом ?
 
Мне надо жесткое условие, получить idcontext где в этой таблице есть три записи с параметрами 15 17 20, обязательно должно быть имено три.
в вашем примере - будут выбраны все, у которых параметры или 15 или 17 или 18
 
будут выбраны все, у которых параметры или 15 или 17 или 18
а тебе надо все, у которых параметры или 15 и 17 и 18
ну и какая проблема перевести на английский?
 
Есть несколько десятков тысяч записек.
Мне надо, приведенная таблица - это связующая таблица, мне нужно получить idcontext имееющий в трех записей параметры строго 15 и 17 и 18
приведенные выше примеры выберут намного больше записей, нежели нужно.
спасибо
 
VEgor
ты англйский совсем не знаешь? даже на уровне "да-нет"?
 
знаю, но не могу понять как сделать это.
если приведете пример буду благодарен
спасибо.
 
Фанат
А ты умеешь?
ПОДСКАЗЫВАЮ ОТВЕТ: ЛИМИТ 3!!!
Если мои мессаги удаляешь, то хоть сам человеку посоветуй!
 
Может, так ?

PHP:
SELECT idcontext
FROM table
WHERE params IN (15, 16, 17)
GROUP BY idcontext
HAVING COUNT(DISTINCT params) = 3

К сожалению, под рукой нет мускула, чтобы проверить, но выглядит вроде адекватно.
 
VEgor

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