Запрос с подзапросом - MySQL (219698)
Формулировка задачи:
В старой теме что то никто не подсказал Запрос из трех таблиц
Возможно слишком размыто описал. Сформулирую более конкретно.
Есть таблица с группами:
| id | parent_id | name |
Если группа является родительской то parent_id=0
Если группа является подгруппой то parent_id=id.родительской группы.
Есть родительские группы у которых нет подгрупп.
Необходимо получить список групп у которых нет подгрупп.
Проверить одну группу понятно а вот получить список...?
Виделось что то типа:
Но так не правильно. Подскажите как правильно.
SELECT groups.id FROM groups WHERE groups.parent_id = 0 AND NOT (SELECT groups2.id gid FROM groups groups2 WHERE groups2.parent_id=groups.id)
Решение задачи: «Запрос с подзапросом»
textual
Листинг программы
CREATE TABLE groups ( id int, name varchar(100), parent_id int ); INSERT INTO groups VALUES (333, "Yasmina", 0), (198, "John", 333), (29, "Pedro", 198), (4610, "Sarah", 29), (72, "Pierre", 29), (692, "Tarek", 333); SELECT id FROM groups WHERE id NOT IN (SELECT parent_id FROM groups); +------+ | id | +------+ | 4610 | | 72 | | 692 | +------+
Объяснение кода листинга программы
- Создаётся таблица
groups
с тремя столбцами:id
,name
иparent_id
. - В таблицу
groups
добавляются некоторые данные с помощью оператора INSERT INTO. - Составляется SQL-запрос с подзапросом, который выбирает все строки из таблицы
groups
, где значение столбцаid
не входит в список значений столбцаparent_id
из всех строк этой же таблицы. - Результатом работы запроса будет список значений столбца
id
из тех строк таблицыgroups
, которые удовлетворяют условию.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д