Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 34 из 52 · 7 мин
Иерархии и последовательности: вся цепочка подчинения и календарь дней.
Self join показал непосредственных руководителей. А мне нужна вся лестница: кто на каком уровне от меня.
Рекурсивный запрос: начну с тебя, потом добавлю твоих подчинённых, потом их подчинённых — пока есть кого добавлять.
WITH RECURSIVEUNION ALL. Рекурсивная часть присоединяет к уже найденным строкам следующие. Останавливается, когда новых строк нет.WITH RECURSIVE chain AS (
SELECT id, name, 1 AS level
FROM staff
WHERE manager_id IS NULL
UNION ALL
SELECT s.id, s.name, chain.level + 1
FROM staff s
JOIN chain ON s.manager_id = chain.id
)
SELECT name, level FROM chain ORDER BY level, name;generate_seriesgenerate_series(1, 5) — числа от 1 до 5. С датами и интервалом — все дни периода.SELECT d::date AS day
FROM generate_series(date '2025-11-01', date '2025-11-05', interval '1 day') AS d;У рекурсии должен быть конец: условие, при котором новые строки перестают находиться. Иначе запрос не остановится (здесь его остановит таймер через 5 секунд).
Через WITH RECURSIVE выведи name и level всех сотрудников: у владельца (без руководителя) уровень 1, у его подчинённых 2 и так далее.
WITH RECURSIVE — пока нетcategories — категории товаровid, nameproducts — товарыid, name, category_id, price, weight_g, is_available, added_oncustomers — покупателиid, name, email, city, phone, birthday, registered_onstaff — сотрудникиid, name, role, salary, hired_on, manager_idorders — заказыid, customer_id, staff_id, created_at, statusorder_items — позиции заказовorder_id, product_id, quantity, unit_pricereviews — отзывыid, customer_id, product_id, rating, comment, created_onВыберите один ответ.
Из чего состоит рекурсивный CTE?
Выберите один ответ.
Что вернёт generate_series(1, 3)?
Проверяем состояние обучения…