💻 Рекурсивные запросы в SQL: что делать, если данных о предках нет, но вывести их всё-равно нужно? Представьте, что у нас есть таблица с родословной, и нам нужно вывести всех предков для A1. ❗️Проблема в том, что в таблице есть записи объектов только A1 и С1. А записи остальных объектов присутствуют только как записи родителей, их собственных записей нет. Обычный рекурсивный запрос вернёт только то, что есть в таблице, а мы хотим получить информацию обо всех предках, даже если мы не знаем их родителей. ❓Как это сделать? ✅ Сначала находим реальных предков - это делает обычная рекурсия. ✅ Затем для каждого найденного предка разворачиваем его родителей в отдельные строки и оставляем только те объекты, которых нет в изначальной таблице. ✅ Наконец, объединяем оба полученных результата 👆 Здесь мы использовали функцию unnest(array[mother, father]), чтобы превратить пару (mother, father) в отдельные строки. UNNEST - это функция, которая разворачивает массив в набор строк. #sql #recursive