Un union
conviendrait à votre problème. Certains massages de données sont nécessaires pour donner aux deux côtés de l'union le même nombre et le même type de colonnes :
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
Exemple de travail chez SQL Fiddle.
Pour formater le jeu de résultats comme vous le souhaitez, parcourez le jeu de résultats. Lorsque le group_id
modifications, imprimez un # Group N #
en-tête.
Il ne devrait pas être nécessaire d'avoir d'autres boucles ou itérations côté client, juste un foreach
ou équivalent sur l'ensemble des lignes renvoyées par la requête.