2014-12-02 54 views
2

我知道很多人發佈了這個消息,但他們都沒有像我這樣做的錯誤。不明確的列名錯誤

當我運行這個語句時,我得到了ERROR 1052。

mysql> SELECT module_staff.StaffName AS Staff, 
       SUM(modules.HoursPerWeek) AS Total_Worked 
     FROM module_staff, modules 
     WHERE ModuleCode IN (SELECT ModuleCode 
          FROM module_staff 
          WHERE StaffName ='Nigel Cosworth'); 

但是下面的代碼確實有效。

mysql> SELECT Title, 
       SUM(modules.HoursPerWeek) AS Total_Worked 
     FROM modules 
     WHERE ModuleCode IN(SELECT ModuleCode 
          FROM module_staff 
          WHERE StaffName ='Nigel Cosworth'); 

module_staff有ModuleCode和StaffName

和模塊只列需要的是HoursPerWeek,標題和ModuleCode

+0

的問題是,你在WHERE子句中引用'ModuleCode',它在兩個表中存在加入。你想要哪張桌子?您需要在表格前添加列。 – Taryn 2014-12-02 14:05:42

+0

好的,謝謝你對我的代碼進行編輯,我會在下次發帖的時候記住這一點。 – Aaron 2014-12-02 14:15:15

回答

0

我認爲錯誤在於JOIN列。 嘗試更新這樣的查詢:

SELECT ms.StaffName AS Staff, SUM(m.HoursPerWeek) AS Total_Worked 
FROM module_staff ms 
LEFT JOIN modules m 
ON ms.ModuleCode = m.ModuleCode 
WHERE ms.StaffName ='Nigel Cosworth'; 
+1

你是對的,謝謝你。同樣感謝您向我展示聲明中的表格名稱,以節省打字時間,我仍然在這裏的早期階段 – Aaron 2014-12-02 14:14:37

0
SELECT ms.StaffName AS Staff, SUM(m.HoursPerWeek) AS Total_Worked 
FROM module_staff ms 
LEFT JOIN modules m 
ON ms.ModuleCode = m.ModuleCode 
WHERE ms.StaffName ='Nigel Cosworth'; 

將爲ü工作....