Melengkapi jawaban @Microgen... Karena Anda sudah memiliki dua pilihan pertama yang berfungsi seperti yang Anda inginkan, Anda dapat menyimpan hasil tersebut di tabel sementara:
create temporary table tmp1 as <your first select>;
alter table tmp1 add <some index to accelerate your join later>;
create temporary table tmp2 as <your second select>;
alter table tmp2 add <some index to accelerate your join later>;
Kemudian, Anda dapat menerapkan gabungan sederhana untuk mendapatkan hasil akhir Anda:
select tmp1.id, tmp1.name, tmp1.address, tmp2.occupation
from tmp1 inner join tmp2 using (id)
order by tmp1.id;
Cara lain untuk melakukannya adalah dengan menggunakan VIEW
, tetapi karena pengindeksan bukan hal terbaik yang mereka miliki, saya akan menghindarinya, khususnya ketika dua select
pertama Anda sama rumitnya.