2012-11-01 91 views
1

我有這個查詢,工作正常。它帶來了兩個表,manager_details和用戶的數據。我需要的是讓管理人員的總分但從第1周到第7周。 Week是manager_details表中的另一個字段,其值可能爲0-x。將filteres添加到我的查詢中會導致錯誤。 Mysql

SELECT 
    SUM(mng.score) AS accumulated_score, 
    mng.manager_id AS manager_id, 
    users.id, 
    users.fname, 
    users.lname 
FROM manager_details AS mng 
    JOIN users 
    ON users.id = mng.manager_id 
GROUP BY manager_id 
ORDER BY accumulated_score DESC 
LIMIT 5 

爲了得到1周比分至7星期,我嘗試添加

SELECT 
    SUM(mng.score) AS accumulated_score, 
    mng.manager_id AS manager_id, 
    users.id, 
    users.fname, 
    users.lname 
FROM manager_details AS mng 
WHERE mng.week >= 1 AND mng.week <= 6 -- this line 
    JOIN users 
    ON users.id = mng.manager_id 
GROUP BY manager_id 
ORDER BY accumulated_score DESC 
LIMIT 5 

,並得到這個

錯誤代碼:1064你有一個錯誤的SQL語法;檢查對應於你的MySQL服務器版本的權利 語法使用近「上users.id = mng.manager_id集團用戶加入 BY MANAGER_ID

的 手動和也試圖

 ...   
    HAVING mng.week >= 1 AND mng.week <= 6 -- <-- 
    ... 

我還把GROUP BY之前的HAVING類放在GROUP BY之後,並且沒有工作,得到了mysql錯誤檢查語法..等等。

我做錯了什麼,但不知道它是什麼。

所以,用什麼條款,我在哪裏把這個條件來篩選我mng.score並獲得唯一擺在1-7周之間的分數?

+1

'WHERE mng.week> = 1 AND mng.week <= 6' - 沒問題。你最好把你修改後的查詢和確切的錯誤信息。 「我做錯了什麼,但不知道它是什麼。」 ---如果你不把它展示給我們,我們應該如何幫助? – zerkms

+0

完全滑了我的心思添加代碼錯誤,謝謝你的提醒。 – MJoraid

+2

'WHERE'後去**'JOIN'和** **前'集團BY' – zerkms

回答

2
SELECT 
    SUM(mng.score) AS accumulated_score, 
    mng.manager_id AS manager_id, 
    users.id, 
    users.fname, 
    users.lname 
FROM manager_details AS mng 
    JOIN users 
    ON users.id = mng.manager_id 
WHERE mng.week >= 1 AND mng.week <= 6 
GROUP BY manager_id 
ORDER BY accumulated_score DESC 
LIMIT 5 
+0

作爲魅力。謝謝。 – MJoraid

+0

出了問題問題,是有辦法,我可以查看分數每星期,讓我們說mng.score爲week1,mng.score對於只使用SQL每位經理week2 .etc?我知道可以編寫一些簡單的PHP腳本來實現這一點,但總是想知道sql是否具有這種能力。 – MJoraid

+0

實際上如果u沒有分組然後mng.score顯示經理的第1周和第6周 –

相關問題