所以我得到這個查詢:SQL LEFT JOIN WHERE無法顯示正確的結果
數據結構: 用戶 ID --- inlog ---- ----名字更多的東西
llntoets ID ---代碼---- ---- inlog更多的東西
oefeningen ID --- speler ---狀態---- morestuff
(inlog和speler始終是一個相同的值用戶)
SELECT
// Some other stuff working
SUM(o.status) AS oefn
FROM users AS u
LEFT JOIN llntoets AS l
ON (u.inlog = l.inlog)
LEFT JOIN oefeningen AS o
ON (u.inlog = o.speler) AND o.status = 'afgewerkt'
WHERE
code = '$code'
GROUP BY l.inlog
ORDER BY klas ASC, klasnr ASC
一切運行良好,除了1件事情的OEFN變量。它顯示了一個數字,有時它顯示了正確的值,有時它顯示的值比應該高得多。有人告訴我可能是因爲GROUP BY。有人可以幫我嗎?
它應該統計來自表oefeningen的總記錄,其中狀態='afgewerkt',以及speler是來自用戶的內部記錄。謝謝,如果您有其他問題,請嘗試解釋更多。
你可能有1:M的關係,你不期待。在你的選擇中包含l.inlog,按順序排序,然後按語句刪除組。現在找到一個比您預期的SUM高得多的l.inlog值,並查看爲什麼您的選擇中包含這些行。 – Carth 2014-09-19 12:57:00