sql >> Database >  >> RDS >> Mysql

SELECTEER uit twee tabellen op basis van dezelfde id en gegroepeerd

Een union zou passen bij uw probleem. Enige gegevensmassage is vereist om beide zijden van de unie hetzelfde aantal en type kolommen te geven:

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

Werkvoorbeeld bij SQL Fiddle.

Om de resultatenset naar wens op te maken, herhaalt u de resultatenset. Wanneer de group_id wijzigingen, druk een # Group N # . af koptekst.

Het zou niet nodig moeten zijn om andere lussen of iteraties aan de clientzijde te hebben, slechts één foreach of equivalent over de reeks rijen die door de zoekopdracht worden geretourneerd.



  1. Hoe haal ik het resultaat op uit een MySQL-rij met meerdere kolommen met dezelfde naam met PHP?

  2. Voert de MySQL IN-component de subquery meerdere keren uit?

  3. MySQL:Tabel afkappen binnen transactie?

  4. GROEP OP MET (DISTINCT) :PHP, MYSQL