Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MYSQL Kiri Gabung COUNTS dari beberapa tabel

select
  t.Topic,
  t.Title,
  count(distinct s.starID) as StarCount,
  count(distinct m.User) as UserCount,
  count(distinct m.messageID) as MessageCount
from
  Topics t
  left join Messages m ON m.Topic = t.Topic
  left join Stars_Given s ON s.Topic = t.Topic
group by
  t.Topic,
  t.Title

Sql Fiddle

Atau, Anda dapat melakukan agregasi dalam sub-kueri, yang kemungkinan akan lebih efisien jika Anda memiliki sejumlah besar data dalam tabel:

select
  t.Topic,
  t.Title,
  s.StarCount,
  m.UserCount,
  m.MessageCount
from
  Topics t
  left join (
    select 
      Topic, 
      count(distinct User) as UserCount,
      count(*) as MessageCount
    from Messages
    group by Topic
  ) m ON m.Topic = t.Topic
  left join (
    select
      Topic, 
      count(*) as StarCount
    from Stars_Given 
    group by Topic
  ) s ON s.Topic = t.Topic

Sql Fiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menambahkan kunci utama ke tabel MySQL?

  2. Cara Memformat Angka Sebagai Mata Uang di MySQL

  3. Optimalkan permintaan MySQL untuk menghindari Menggunakan di mana; Menggunakan sementara; Menggunakan filesort

  4. Cara menyalin tabel dari satu database mysql ke database mysql lain

  5. Dapatkan semua karakter sebelum spasi di MySQL