Я считаю, что вы хотите использовать union all
. Это может быть начало:
select
'Enhancement: ' type_,
p.name,
e.name
from
project p,
enhancement e
where
p.id =
e.project_id
UNION ALL
select
'Support: ' type_,
p.name,
s.name
from
project p,
support s
where
p.id =
s.project_id;
Фон для моего предложения:
Я полагаю, что первоначальные постеры хотят избежать следующего повторения
select
p.name,
e.name,
s.name
from
project p,
enhancement e,
support s
where
p.id = e.project_id and
p.id = s.project_id ;
результат в
NAME NAME NAME
--------------- --------------- ---------------
Project one Enhancement 2 Support 1
Project one Enhancement 1 Support 1
Project two Enhancement 3 Support 2
Project two Enhancement 3 Support 3
То есть: Улучшение 3 и Поддержка 1 возвращается дважды, что (вероятно) нежелательно.
Однако, с моим предложением, запрос возвращает
TYPE_ NAME NAME
------------- --------------- ---------------
enhancement: Project one Enhancement 1
enhancement: Project one Enhancement 2
enhancement: Project two Enhancement 3
support: Project one Support 1
support: Project two Support 2
support: Project two Support 3
, то есть каждый случай улучшения и поддержки возвращается ровно один раз.
Я выбрал UNION ALL
вместо UNION
, чтобы СУБД не выполняла дополнительный этап фильтрации дублированных записей (что, я считаю, не нужно).