En union
skulle passa ditt problem. Viss datamassage krävs för att ge båda sidor av förbundet samma antal och typ av kolumner:
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
Fungerande exempel på SQL Fiddle.
För att formatera resultatuppsättningen som du vill, iterera över resultatuppsättningen. När group_id
ändringar, skriv ut en # Group N #
rubrik.
Det borde inte finnas något behov av att ha andra loopar eller iterationer på klientsidan, bara en foreach
eller motsvarande över uppsättningen rader som returneras av frågan.