テストデータを整備するのに、YというテーブルのIDを外部キーとして持っているA〜Dのテーブルのレコードを集めて1つの表にする必要がありました。
こういう時はUNIONの出番です。
select zzz.id, zzz.name from ( selct y.id, y.name, from y_table as y join a_table as a on a.y_id = y.id --A_table union selct y.id, y.name, from y_table as y join b_table as b on b.y_id = y.id --B_table union selct y.id, y.name, from y_table as y join c_table as c on c.y_id = y.id --C_table union selct y.id, y.name, from y_table as y join b_table as d on d.y_id = y.id --D_table ) as zzz
派生テーブルにしておけばorder_byもwhere句も使えます。zzzの後に。
ただ、MYSQLの場合はUNIONした結果をFROM句に持ってくるのはサブクエリでしか無いので、WHEREをFROM句の外に書いてしまうと爆裂重くなるかもしれません。その時はUNIONしたい集合をはじめからWHEREで絞りましょう。