Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SELECT aus zwei Tabellen, die auf derselben ID basieren und gruppiert sind

Eine union würde zu deinem Problem passen. Einige Datenmengen sind erforderlich, um beiden Seiten der Vereinigung die gleiche Anzahl und den gleichen Spaltentyp zu geben:

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

Arbeitsbeispiel bei SQL Fiddle.

Um die Ergebnismenge nach Belieben zu formatieren, iterieren Sie über die Ergebnismenge. Wenn die group_id Änderungen, drucken Sie einen # Group N # Kopfzeile.

Es sollte keine Notwendigkeit für andere Schleifen oder Iterationen auf der Client-Seite geben, nur ein foreach oder Äquivalent über den Satz von Zeilen, die von der Abfrage zurückgegeben werden.