2010-02-19 49 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