Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MYSQL बाएँ कई तालिकाओं से COUNTS में शामिल हों

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

एसक्यूएल फिडल

या, आप उप-प्रश्नों में एकत्रीकरण कर सकते हैं, जो संभवतः अधिक कुशल होगा यदि आपके पास तालिकाओं में पर्याप्त मात्रा में डेटा है:

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

एसक्यूएल फिडल




  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/MariaDB त्रुटि #1044 और #1045 उपयोगकर्ता के लिए एक्सेस अस्वीकृत

  2. संचार लिंक विफलता, स्प्रिंग बूट + MySql + Docker + Hibernate

  3. MySQL के साथ Entity Framework का उपयोग करते समय, यूनिकोड वर्णों को मूल वर्णों से बदल दिया जाता है

  4. तालिका का उपयोग न करने वाली दो तिथियों के बीच सभी तिथियों का चयन करें (तिथियों की सूची बनाएं)

  5. MySQL:वर्तमान सप्ताह के सोमवार की तिथि चुनें