Запрос с подзапросом - 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
, которые удовлетворяют условию.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д