@avtomon
Full-stack разработчик

Можно ли использовать CASE в LEFT JOIN?

Можно ли исполнить в Postgres запрос подобный вот этому:
SELECT
                                 c.controltype AS controltype,
                                 c.coretype AS coretype,
                                 g.name AS group_name,
                                 core.name AS corename,
                               FROM
                                 controls AS c
                               LEFT JOIN
                                 groups AS g
                                 ON
                                   g.id = c.group_id
                               LEFT JOIN
                                 (CASE
                                   WHEN coretype = 'Программа'
                                     THEN programs
                                   WHEN coretype = 'Дисциплина'
                                     THEN disciplines
                                   WHEN coretype = 'Модуль'
                                     THEN modules
                                   END)
                                 AS core
                                 ON
                                   c.core_id = core.id
                               LEFT JOIN
                                 users AS u
                                 ON
                                   u.id = c.teacher_id
                               WHERE
                                 id = :id

Т. е. в зависимости от какого либо значения выбранной строки присоединить таблицу. Постгрес делает выборку уже после сведения всех таблиц, но может все же есть какой-то обходной путь?
  • Вопрос задан
  • 3292 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Timosha
вообще так нельзя
в данном случае можно использовать наследованные таблицы www.postgresql.org/docs/9.3/static/ddl-inherit.html
Ответ написан
Ваш ответ на вопрос

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

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