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

Как пробросить значение поля в CTE?

Суть вопроса в пробросе значения поля в MariaDB, либо в изменении запроса.

Есть две таблицы, подразделения и пользователи:
users (id, name, structure_id)
structure (id, parent_id, name) - у корневой структуры parent_id = null

Необходимо вывести следующие поля:
users.id, users.name, all_structures (все названия подразделений до корня через разделитель)

Есть запрос:
SELECT
    u.*,
    (
        WITH
            RECURSIVE struct AS (
            SELECT cs.*
            FROM structure cs
            WHERE cs.id = u.structure_id -- ошибка именно тут
            UNION ALL
            SELECT cs.*
            FROM struct s
            JOIN structure cs ON cs.id = s.parent_id
        )
        SELECT GROUP_CONCAT(struct.name SEPARATOR '|')
        FROM struct
        WHERE
                struct.id <> u.structure_id -- тут ошибки нет

        ) all_structures
FROM users u


Пробовал и через JOIN'ы, но проблема всегда в одном и том же месте.

Заранее спасибо за ответ.
  • Вопрос задан
  • 64 просмотра
Подписаться 1 Средний 6 комментариев
Пригласить эксперта
Ваш ответ на вопрос

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

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