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

VÆLG fra to tabeller baseret på samme id og grupperet

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.



  1. Hvorfor ikke bruge oprettelsestiden for en post som en primær nøgle?

  2. Markør forældelse Dump

  3. PostgreSQL:mellem med datetime

  4. SQL Server:det maksimale antal rækker i tabellen