Mysql
 sql >> база данни >  >> RDS >> Mysql

ИЗБЕРЕТЕ от две таблици въз основа на един и същ идентификатор и групирани

union ще отговаря на вашия проблем. Изисква се известен масаж на данни, за да се даде и на двете страни на съюза еднакъв брой и тип колони:

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

Работен пример в SQL Fiddle.

За да форматирате резултатния набор, както желаете, повторете през набора от резултати. Когато group_id промени, отпечатайте # Group N # заглавка.

Не трябва да има нужда от други цикли или итерации от страна на клиента, само един foreach или еквивалент върху набора от редове, върнати от заявката.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съхраняване на промени в обекти:MySQL правилното решение ли е?

  2. Как да сравните две колони, за да намерите несравними записи в MySQL

  3. как да създадете db mysql с sqlalchemy

  4. Изпълнение на php скрипт в javascript?

  5. MySQL INSERT INTO table VALUES.. срещу INSERT INTO table SET