Mysql
 sql >> Baza danych >  >> RDS >> Mysql

WYBIERZ z dwóch tabel opartych na tym samym identyfikatorze i pogrupowanych

union pasowałby do twojego problemu. Aby nadać obu stronom unii taką samą liczbę i typ kolumn, wymagana jest pewna masa danych:

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

Przykład pracy w SQL Fiddle.

Aby sformatować zestaw wyników, jak chcesz, przeprowadź iterację zestawu wyników. Gdy group_id zmiany, wydrukuj # Group N # nagłówek.

Nie powinno być potrzeby posiadania innych pętli lub iteracji po stronie klienta, wystarczy jedna foreach lub odpowiednik zbioru wierszy zwróconych przez zapytanie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wstawić wyjście json do mysql za pomocą węzła js

  2. Uzyskaj najczęstsze wartości dla wszystkich kolumn

  3. org.hibernate.AssertionFailure:null id we wpisie (nie opróżniaj sesji po wystąpieniu wyjątku)

  4. MySQL - Obliczanie pól w locie vs przechowywanie obliczonych danych

  5. MySQL/PHP - paginacja numerów stron Wyświetlaj czasami tylko 10 stron