Dokončuji odpověď @Microgen... Vzhledem k tomu, že již máte dva první výběr fungující tak, jak chcete, můžete si tyto výsledky ponechat v dočasných tabulkách:
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>;
Poté můžete použít jednoduché spojení a získat konečný výsledek:
select tmp1.id, tmp1.name, tmp1.address, tmp2.occupation
from tmp1 inner join tmp2 using (id)
order by tmp1.id;
Dalším způsobem, jak to udělat, je použít VIEW
, ale protože indexování není to nejlepší, co mají, vyhnul bych se jim, zvláště když vaše první dva select
jsou stejně složité.