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

SQL:Memilih jumlah beberapa tabel

Masalahnya adalah matematika dengan nol, dan memesan dengan nol (periksa opsi "NULLS LAST" untuk mengesampingkan pemesanan default yang mengembalikan nol terlebih dahulu untuk urutan menurun).

Dalam kasus Anda, dengan gabungan luar, jika pengguna memiliki banyak komentar artikel tetapi tidak ada komentar forum, nah, 100 + null =null dalam matematika Oracle. Jadi agar matematika berfungsi, Anda perlu membuat null=0. Di situlah NVL() masuk (dan juga memiliki efek samping yang bagus untuk menghilangkan null sial dari set hasil Anda)!

SELECT u.id, u.username, (NVL(COUNT(a.id),0) + NVL(COUNT(f.id),0)) AS rank 
FROM site_users u 
  LEFT JOIN site_articles_comments a ON a.user_id = u.id 
  LEFT JOIN site_forum_comments f ON f.user_id = u.id 
GROUP BY u.username, u.id ORDER BY rank DESC LIMIT :l

Saya melihat Anda memiliki MySQL dan Oracle di tag Anda - di atas adalah untuk Oracle. Jika untuk MYSQL gunakan COALESCE(COUNT(),0) sebagai gantinya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. di mana dalam klausa mysql

  2. Memindahkan data dari tabel lama ke tabel lain PHP MYSQL

  3. Perintah Pencadangan dan Pemulihan MySQL untuk Administrasi Basis Data

  4. Masalah Pool Koneksi dengan MySQL menggunakan Hibernate dan Apache DBCP

  5. Keluarkan kueri sql ke dalam tabel html