Завършване на отговора на @Microgen... Тъй като вече имате два първи избора, работещи както искате, можете да запазите тези резултати във временни таблици:
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>;
След това можете да приложите просто присъединяване, за да получите крайния си резултат:
select tmp1.id, tmp1.name, tmp1.address, tmp2.occupation
from tmp1 inner join tmp2 using (id)
order by tmp1.id;
Друг начин да го направите е да използвате VIEW
, но тъй като индексирането не е най-доброто нещо, което имат, бих ги избягвал, особено когато първите ви две select
са толкова сложни.