>_ IzzyLab

Практическое задание

SQLite: соедини таблицу саму с собой

средне

В базе /root/org.db есть таблица employees(id INTEGER, name TEXT, manager_id INTEGER), где manager_id ссылается на id руководителя в этой же таблице (у самого начальника он NULL). Составь запрос с self-join (соединением таблицы с собой), который для каждого сотрудника, у кого есть руководитель, выдаёт пару сотрудник|руководитель, и запиши результат в /root/pairs.txt.

Что потренируешь:
  • self-join
  • join
  • алиасы таблиц
  • иерархия
  • sqlite3

Разбор темы

Self-join — это обычное соединение JOIN, где таблица стыкуется сама с собой; чтобы отличать «две копии», каждой дают собственный алиас, и одна копия играет роль сотрудника, другая — руководителя. Условие связи задаётся в ON, соединяя ссылочную колонку одной копии с ключом другой. INNER JOIN автоматически отбрасывает строки без пары (например, начальника с NULL в ссылке), тогда как LEFT JOIN их бы сохранил. Так одной таблицей моделируются иерархические связи вроде «подчинённый → руководитель».

Что проверяется

  1. подчинённые верхнего руководителя найдены
  2. цепочка руководства второго уровня верна

Как это выглядит