Повторение - Самосоединение
Часть раздела Основы путешествия по SQL на Coddy. Урок 47 из 72.
Задание
СложноДоступные таблицы и столбцы:
<strong>friends</strong>:<strong>id</strong>,<strong>name</strong>,<strong>friend_id</strong>
Для каждого человека в таблице friends найдите все связи через друга (friend-of-friend). Связь через друга возникает, когда человек A дружит с человеком B, который, в свою очередь, дружит с человеком C. Выведите эти связи в виде трех столбцов:
- friend1: исходный человек
- friend2: его прямой друг
- friend3: друг его друга
Правила:
- Не включайте случаи, когда friend3 — это тот же человек, что и friend1
- Отсортируйте результаты по имени friend1 в порядке убывания
Пример: если Alice дружит с Bob, а Bob дружит с Carol, то Alice-Bob-Carol будет допустимой связью через друга.
Попробуйте сами
-- Соедините таблицу с самой собой дважды, чтобы одна строка содержала цепочку из трёх человек
SELECT ____ AS friend1, ____ AS friend2, ____ AS friend3
FROM friends f1
JOIN friends f2 ON ____
JOIN friends f3 ON ____
-- Отбросьте цепочки, которые замыкаются на человека, с которого они начались
WHERE ____
ORDER BY ____ DESC;Все уроки раздела Основы
4Больше ключевых слов
Ключевое слово INКлючевое слово BETWEENКлючевое слово LIKEКлючевое слово ASПовторение - Модели мобильных телефонов2Условия
Основы условийКлючевое слово ANDКлючевое слово ORКлючевое слово NOTКомбинирование нескольких условийСкобкиБулевы значения5Арифметические операции
Математические операторыМатематические столбцыОперация moduloФункция ROUND()3Специальный формат возврата
Значения NULLСортировка результатов, часть 1Сортировка результатов, часть 2Повторение - Фирма по кибербезопасностиОграничение количества записейПовторение - Автозавод6Вводные вызовы
Повторение - Парламентские выборыПовторение - Арест преступника полициейПовторение - Ёмкость для напитков в бареПовторение - Создание новых столбцовПотренируйтесь самостоятельно: Песочница SQL