Мне нужно сделать что-то подобное (в MySQL), мои попытки использовать UNION не будут работать до сих пор.
Теоретически:
SELECT * FROM
tableA A
JOIN tableB B ON A.tableAId = B.tableAId
LEFT JOIN tableC C ON C.tableAId = A.tableAId
LEFT JOIN tableD D ON D.tableAId = A.tableAId
JOIN tableE E
ON (C.tableEId = E.tableEId OR D.tableEId = E.tableEId)
Ожидаемый результат - пересечение Aс B, необязательный C с A, необязательный D с A и получить результат E, если его идентификатор на C или D.
Чтобы узнать, найдена ли запись из C или D, я используюпроверка IF, если tableCId или tableDId равны нулю.