Найти записи без связей - MySQL
Формулировка задачи:
Всем привет.
Есть таблица product и options. И связывающая их таблица product_options.
Пример данных в них:
product:
1 title-product-1
2 title-product-2
options
1 title-option-1
2 title-option-2
3 title-option-3
product_options
1 | 1
1 | 2
2 | 1
Как видим 3я опция не связанна ни с каким продуктом. Как найти ид всех опций которые не связанны с продуктами.
Решение задачи: «Найти записи без связей»
textual
Листинг программы
SELECT * FROM options O WHERE NOT EXISTS (SELECT 1 FROM product_options PO WHERE O.relation = PO.relation)
Объяснение кода листинга программы
В данном коде выполняется запрос на выборку всех записей из таблицы options
, которые не имеют связей с другими записями в таблице product_options
. Это достигается за счет использования оператора NOT EXISTS, который проверяет наличие соединения между таблицами по полю relation
. Если такое соединение существует, то запись не будет выбрана.
- SELECT * FROM options O — выборка всех записей из таблицы
options
- WHERE NOT EXISTS (SELECT 1 FROM product_options PO — проверка наличия соединения с таблицей
product_options
- WHERE O.relation = PO.relation) — условие, что поле
relation
в таблицеoptions
должно быть равно полюrelation
в таблицеproduct_options
- SELECT 1 FROM product_options PO — выборка только одной записи из таблицы
product_options
для проверки наличия соединения - WHERE O.relation = PO.relation — условие, что поле
relation
в таблицеoptions
должно быть равно полюrelation
в таблицеproduct_options
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д