Запрос с подзапросом - 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 |
+------+

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

  1. Создаётся таблица groups с тремя столбцами: id, name и parent_id.
  2. В таблицу groups добавляются некоторые данные с помощью оператора INSERT INTO.
  3. Составляется SQL-запрос с подзапросом, который выбирает все строки из таблицы groups, где значение столбца id не входит в список значений столбца parent_id из всех строк этой же таблицы.
  4. Результатом работы запроса будет список значений столбца id из тех строк таблицы groups, которые удовлетворяют условию.

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


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

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

12   голосов , оценка 4.417 из 5