То, что вы описываете, может быть достигнуто с помощью UNION ALL
, а не JOIN
:
select m.id, m.message, null file, m.date
from order_ticket_messages m
where exists (select 1 from order_files where orderid = m.orderid)
union all
select f.id, null, f.file, f.date
from order_files f
where exists (select 1 from order_ticket_messages where orderid = f.orderid)
order by date
Или, если вы хотите сохранить сообщения и файлы с одним и тем же orderid
вместе:
select id, message, file, date
from (
select m.id, m.message, null file, m.date, m.orderid
from order_ticket_messages m
where exists (select 1 from order_files where orderid = m.orderid)
union all
select f.id, null, f.file, f.date, f.orderid
from order_files f
where exists (select 1 from order_ticket_messages where orderid = f.orderid)
) t
order by orderid, date