Запрос на выборку ИД продуктов по - MySQL
Формулировка задачи:
Помогите, пожалуйста, построить запрос
Таблица
Хочу выбрать только те продукты, в которых filter_id не имеет значения 1444, но имеет значение 1446.
product_to_filter
product_id | filter_id |
1 | 1444 |
2 | 1445 |
3 | 1446 |
1 | 1445 |
1 | 1446 |
2 | 1446 |
2 | 1444 |
5 | 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 выполняется запрос выборки ИД продуктов, которые необходимо отфильтровать.
- FROM product_to_filter a — указывается таблица, из которой производится выборка (в данном случае
product_to_filter
) и название столбца, по которому происходит выборка (в данном случаеa
). - WHERE — начинается условие выборки.
- a.filter_id = 1446 - устанавливается первое условие: значение столбца
filter_id
должно быть равно 1446. - AND NOT EXISTS ( — добавляется второе условие с использованием подзапроса: не должно существовать записей, удовлетворяющих условию.
- SELECT filter_id — указывается, какие столбцы из таблицы
product_to_filter
должны быть выбраны в подзапросе (в данном случае толькоfilter_id
). - FROM product_to_filter b — указывается таблица, из которой производится выборка для подзапроса (в данном случае
product_to_filter
). - WHERE b.product_id = a.product_id AND filter_id = 1444 - устанавливаются условия для подзапроса: значение столбца
product_id
должно быть равно значению столбцаproduct_id
из исходной таблицы, а значение столбцаfilter_id
должно быть равно 1444. - ) — закрывается подзапрос.
- ; — заканчивается условие выборки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д