SQL: расположите каскадом ОБЪЕДИНЕНИЕ и СОЕДИНЕНИЕ

GhostDoc делает точно это. Для методов, которые не наследованы, это пытается создать описание из имени.

FlingThing() становится "Flings the Thing"

5
задан Athafoud 2 February 2016 в 09:26
поделиться

2 ответа

Используйте здесь производную таблицу типа "foo", а затем снова ПРИСОЕДИНЯЙТЕСЬ, как хотите:

SELECT
    *
FROM
    TABLE_3
    LEFT JOIN
    (
    SELECT ID_1, name_1, surname_1, FROM T_ONE
    UNION --ALL would be more efficient if results do not overlap, as van's comment said
    SELECT ID_2, name_2, surname_2 FROM TABLE_2
    ) foo  ON TABLE_3.ID_3 = foo.ID_1

PS. Используйте соединения LEFT: менее запутанные, чем соединения RIGHT.

14
ответ дан 18 December 2019 в 09:08
поделиться

Вам необходимо предоставить соединение в обоих SELECT:

SELECT ID_1, name_1, surname_1, FROM T_ONE
RIGHT JOIN TABLE_3 ON TABLE_3.ID_3 = T_ONE.ID_1

UNION

SELECT ID_2, name_2, surname_2 FROM TABLE_2
RIGHT JOIN TABLE_3 ON TABLE_3.ID_3 = TABLE_2.ID_2

Или что-то в этом роде. Не забывайте, что UNION удаляет дубликаты, поэтому, если вы хотите, чтобы дубликаты были включены, используйте UNION ALL

2
ответ дан 18 December 2019 в 09:08
поделиться
Другие вопросы по тегам:

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