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

SQL:Избор на брой на множество таблици

Проблемът е математика с нули и подреждане с нули (проверете опцията „NULLS LAST“ за отмяна на подреждането по подразбиране, което връща първо нулите за низходящ ред).

Във вашия случай, с външните съединения, ако потребителят има много коментари за статии, но няма коментари във форума, добре, 100 + null =null в математиката на Oracle. Така че, за да работи математиката, трябва да направите null=0. Това е мястото, където NVL() идва на помощ (и също така има хубавия страничен ефект да елиминира досадните нули от вашия набор от резултати)!

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

Виждам, че имате MySQL и Oracle във вашите тагове - горното е за Oracle. Ако за MYSQL използвайте вместо това COALESCE(COUNT(),0).



  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_fetch_object():предоставеният аргумент не е валиден резултатен ресурс на MySQL

  2. АКТУАЛИЗИРАНЕ Същият ред след АКТУАЛИЗИРАНЕ в Trigger

  3. Дизайн на база данни за коментари и отговори

  4. Как да преминете през таблица с помощта на курсор в MySQL?

  5. Дребнозърнест контрол на достъпа