2010-02-19 55 views
4

我想在单个查询中计算两列,但结果是为medcount和uploadcount吐出相同的值。有什么建议么?单个查询中的MySQL多次计数

SELECT * , COUNT($tbl_list.listname) AS listcount, 
        COUNT($tbl_uploads.id) AS uploadcount 
     FROM $tbl_members 
     LEFT JOIN $tbl_list ON $tbl_members.username = $tbl_list.username 
     LEFT JOIN $tbl_uploads ON $tbl_members.username = $tbl_uploads.username 
     GROUP BY $tbl_members.username 
     ORDER BY $tbl_members.lastname, $tbl_members.firstname; 

回答

7

用途:

SELECT tm.*, 
      x.listcount, 
      y.uploadcount 
    FROM $tbl_members tm 
LEFT JOIN (SELECT tl.username, 
        COUNT(tl.listname) AS listcount 
      FROM $tbl_list tl 
     GROUP BY tl.username) x ON x.username = tm.username 
LEFT JOIN (SELECT tu.username, 
        COUNT(tu.id) AS uploadcount 
      FROM $tbl_uploads tu 
     GROUP BY tu.username) y ON y.username = tm.username 
GROUP BY tm.username 
ORDER BY tm.lastname, tm.firstname