Задать вопрос
@mtNATS

Как вытащить одним запросом два уровня родителей?

есть таблица
id | referal_id | referer_id

два уровня вложенности, нужно имея referer_id проверить является ли он чьим-то потомком и если да,
то является ли родитель в свою очередь чьим-то потомком... в результате необходимо получить 2 id с именами parent и father

не могу сообразить как составить запрос, пока получаю то что нужно вот так, но это не совсем удобно, т.к. у меня не получается это использовать с pdo
spoiler
set @parent = (SELECT `referer_id` FROM `referals` WHERE `referal_id` = ?);
set @father = (SELECT `referer_id` FROM `referals` WHERE `referal_id` = @parent);
select @father, @parent;
  • Вопрос задан
  • 60 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Java-разработчик
    8 месяцев
    Далее
  • Shultais Education
    Основы SQL
    3 месяца
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `l1`.`referer_id` AS `parent`, `l2`.`referer_id` AS `grandparent`
  FROM `table` AS `l1`
  LEFT JOIN `table` AS `l2` ON `l2`.`referal_id` = `l1`.`referer_id`
  WHERE `l1`.`referal_id` = :referal_id
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы