2011-04-22 58 views
1

我有一张名为Tickets的表,其中包含id,name。 以及一个名为Articles with id,ticket_id和status的表。MySQL从连接表中计数两组

我想显示所有票务名称,以及文章与TICKET_ID的计数一起,并且还与TICKET_ID和状态文章COUNT =“1”

到目前为止,我已经试过这没有成功:

SELECT t.name, count(a.id), count(aa.id) 
FROM tickets t 
LEFT JOIN articles a ON t.id = a.ticket_id GROUP BY t.id 
LEFT JOIN articles aa ON t.id = aa.ticket_id AND aa.status = '1' GROUP BY t.id 

在此先感谢您的任何帮助和建议。

回答

1

它应该工作...

SELECT t.name, 
      count(a.id), 
      SUM(CASE WHEN a.status = '1' THEN 1 ELSE 0 END) 
     FROM tickets t 
     LEFT JOIN articles a 
     ON t.id = a.ticket_id 
    GROUP BY t.id, 
      t.name