我有兩張桌子?!癿embers”是所有成員的列表,“stats”是工作日期的列表。共享字段是 memberID。我需要一個每個人工作天數的 COUNT,我希望每個人都列在輸出表中,即使他們還沒有工作日。簡化的數據庫結構是:**members** **stats** memberID lname fname memberID date statsID1 Mertz Fred 1 2017-12-31 12 Doe Jane 3 2017-12-31 23 Smith Frank 4 2017-12-31 34 Ricardo Lucy 2 2018-12-31 45 Starr Ringo 4 2018-12-31 5 2 2019-05-05 6 3 2019-05-05 7所需的輸出是:memberID lname fname Total Days 2 Doe Jane 2 1 Mertz Fred 1 4 Ricardo Lucy 2 3 Smith Frank 2 5 Starr Ringo 0 OR blankRingo 還沒有工作幾天,也沒有出現在輸出表中。我的代碼是:$sql = "SELECT u.*, COUNT(s.memberID)as tot_days FROM members u LEFT JOIN stats s ON s.memberID = u.memberID GROUP BY s.memberID ORDER BY lname,fname";$members = mysqli_query($dbc,$sql) or die(mysqli_error());while ($row = mysqli_fetch_array($members)){ $row = array_map('htmlspecialchars', $row); echo <<< HTML etc.這完成了我想要它做的所有事情,除了那些還沒有工作一天的成員。JOIN、LEFT JOIN、LEFT OUTER JOIN、RIGHT JOIN、RIGHT OUTER JOIN 都產生相同的結果。我嘗試了 LEFT 和 RIGHT INNER JOIN,如果它們存在的話,就會產生錯誤Warning: mysqli_error() expects exactly 1 parameter, 0 given。有人建議使用,COALESCE (COUNT(s.memberID),0) as tot_days但這只會產生與上述相同的錯誤。我已經在這里待了好幾天了,我感到有點沮喪!
2 回答

守候你守候我
TA貢獻1802條經驗 獲得超10個贊
SELECT u.*
, COUNT(DISTINCT s.date) tot_days
FROM members u
LEFT
JOIN stats s
ON s.memberID = u.memberID
GROUP
BY u.memberID
ORDER
BY u.lname
, u.fname
- 2 回答
- 0 關注
- 139 瀏覽
添加回答
舉報
0/150
提交
取消