En union
ville passe til dit problem. Nogle datamassage er påkrævet for at give begge sider af foreningen samme antal og samme type kolonner:
select group_id
, id as item_id
, name
, description
, source_table
from (
select id
, user_id
, group_id
, name
, description
, 'from table1' source_table
from table1
union all
select id
, user_id
, group_id
, name
, description
, 'from table2' -- Column name is already defined above
from table2
) as SubQueriesMustBeNamed
where user_id = 1
order by
group_id
, name
Fungerende eksempel på SQL Fiddle.
For at formatere resultatsættet som du vil, gentag over resultatsættet. Når group_id
ændringer, udskriv en # Group N #
overskrift.
Der skulle ikke være behov for andre loops eller iterationer på klientsiden, kun én foreach
eller tilsvarende over det sæt af rækker, der returneres af forespørgslen.