Запрос на выборку ИД продуктов по - MySQL

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

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

Помогите, пожалуйста, построить запрос Таблица

product_to_filter

product_id filter_id
1 1444
2 1445
3 1446
1 1445
1 1446
2 1446
2 1444
5 1446
Хочу выбрать только те продукты, в которых filter_id не имеет значения 1444, но имеет значение 1446.

Результат запроса должен быть

product_id
3
5

Решение задачи: «Запрос на выборку ИД продуктов по»

textual
Листинг программы
FROM product_to_filter a 
WHERE 
  a.filter_id = 1446 
  AND NOT EXISTS (
    SELECT filter_id 
    FROM product_to_filter b 
    WHERE 
      b.product_id = a.product_id
      AND filter_id = 1444
  );

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

В данном коде на языке SQL выполняется запрос выборки ИД продуктов, которые необходимо отфильтровать.

  1. FROM product_to_filter a — указывается таблица, из которой производится выборка (в данном случае product_to_filter) и название столбца, по которому происходит выборка (в данном случае a).
  2. WHERE — начинается условие выборки.
  3. a.filter_id = 1446 - устанавливается первое условие: значение столбца filter_id должно быть равно 1446.
  4. AND NOT EXISTS ( — добавляется второе условие с использованием подзапроса: не должно существовать записей, удовлетворяющих условию.
  5. SELECT filter_id — указывается, какие столбцы из таблицы product_to_filter должны быть выбраны в подзапросе (в данном случае только filter_id).
  6. FROM product_to_filter b — указывается таблица, из которой производится выборка для подзапроса (в данном случае product_to_filter).
  7. WHERE b.product_id = a.product_id AND filter_id = 1444 - устанавливаются условия для подзапроса: значение столбца product_id должно быть равно значению столбца product_id из исходной таблицы, а значение столбца filter_id должно быть равно 1444.
  8. ) — закрывается подзапрос.
  9. ; — заканчивается условие выборки.

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


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

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

7   голосов , оценка 3.429 из 5
Похожие ответы