Запрос с использованием IN - MySQL

Узнай цену своей работы

Формулировка задачи:

Всем привет, Помогите, пожалуйста выполнить следующий запрос. Есть таблица:
|  product_id   |  filter_id 
--------------------------
|     100       |     58
|     101       |     57
|     101       |     65
|     102       |     30
|     103       |     65
|     104       |     20
|     105       |     57
Нужно получить все product_id, у которых filter_id = 57 и 65. То есть, из данной таблицы это только 101. Делаю вот такой запрос:
SELECT product_id FROM mytable WHERE filter_id = 57 AND filter_id = 65
Но он дает пустой результат. А запрос:
SELECT product_id FROM mytable WHERE filter_id IN (57,65)
Выводит 101, 103 и 105. Подскажите пожалуйста как вывести значение product_id, у которых filter_id равен и 57 и 65. Заранее благодарен!

Решение задачи: «Запрос с использованием IN»

textual
Листинг программы
SELECT product_id FROM mytable WHERE filter_id IN (57,65) GROUP BY 1 HAVING count(*)=2;

Объяснение кода листинга программы

В данном коде происходит следующее:

  1. SELECT product_id FROM mytable - выбираются все записи из таблицы mytable, где поле product_id
  2. WHERE filter_id IN (57,65) - происходит фильтрация по значению поля filter_id, которое должно быть равно 57 или 65
  3. GROUP BY 1 - происходит группировка по полю product_id
  4. HAVING count(*)=2 - происходит фильтрация по количеству записей в каждой группе, должно быть ровно 2 Таким образом, запрос выбирает все записи из таблицы mytable, где поле filter_id равно 57 или 65, затем группируются по полю product_id и оставляются только те группы, в которых количество записей равно 2.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5