@uSide

Как рекурсивно вытянуть записи?

Есть две таблицы. Назвём их table1 и table2. Связь между ними many to many через table3.
Вопрос такой: есть у меня запись из table1, у которой есть связанная с ним запись из table2, которая, в свою очередь, связанна с несколькими из table1 (получается такой себе граф). Как мне вытянуть все записи из table1 по таким связям?
Есть вариант с использованием WITH RECURSIVE, думаю, но не особо понимаю, как сформировать запрос
  • Вопрос задан
  • 234 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
На один уровень table1 -> table2 -> table1:
SELECT DISTINCT `t3b`.`table1_id`
    FROM `table3` AS `t3a`
    JOIN `table3` as `t3b` ON `t3b`.`table2_id` = `t3a`.`table2_id`
        AND `t3b`.`table1_id` != `t3a`.`table1_id`
    WHERE `t3a`.`table1_id` = :id
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы