Mysql
 sql >> Database >  >> RDS >> Mysql

SELEZIONA da due tabelle basate sullo stesso ID e raggruppate

Un union sarebbe adatto al tuo problema. È necessaria una modifica dei dati per assegnare a entrambi i lati dell'unione lo stesso numero e lo stesso tipo di colonne:

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

Esempio funzionante su SQL Fiddle.

Per formattare il set di risultati come preferisci, scorrere il set di risultati. Quando il group_id modifiche, stampa un # Group N # intestazione.

Non dovrebbe essere necessario avere altri loop o iterazioni lato client, solo un foreach o equivalente sull'insieme di righe restituite dalla query.