@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;
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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