union
ще отговаря на вашия проблем. Изисква се известен масаж на данни, за да се даде и на двете страни на съюза еднакъв брой и тип колони:
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
За да форматирате резултатния набор, както желаете, повторете през набора от резултати. Когато group_id
промени, отпечатайте # Group N #
заглавка.
Не трябва да има нужда от други цикли или итерации от страна на клиента, само един foreach
или еквивалент върху набора от редове, върнати от заявката.