2013-04-10 40 views
-1

對不起,對於這樣一個通用的問題,但我真的很難找出爲什麼我得到錯誤Unknown column 'tbl_downloads.itemid' in 'on clause'。 tbl_downloads表中絕對有一個名爲itemid的列。我的SQL有什麼問題?

SELECT tbl_downloads.itemid,COUNT(tbl_downloads.itemid*temp1.score) AS score2 
FROM tbl_downloads,temp1 
LEFT JOIN temp2 ON tbl_downloads.itemid=temp2.itemid 
WHERE temp2.itemid IS NULL 
AND tbl_downloads.memberid=temp1.memberid 
GROUP BY tbl_downloads.itemid 
ORDER BY score2 DESC 
LIMIT 50; 

回答

8

最好是在你使用隱性和顯性連接語法一致的 - 這將是一個進步:(使用``)

SELECT tbl_downloads.itemid, COUNT(tbl_downloads.itemid*temp1.score) AS score2 
FROM tbl_downloads 
JOIN temp1 ON tbl_downloads.memberid=temp1.memberid 
LEFT JOIN temp2 ON tbl_downloads.itemid=temp2.itemid 
WHERE temp2.itemid IS NULL 
GROUP BY tbl_downloads.itemid 
ORDER BY score2 DESC 
LIMIT 50; 
+0

這絕對是要走的路,'從tbl1,tbl2,tbl3'不是一個好習慣。 – plalx 2013-04-10 13:23:48

4

我真的很努力找出爲什麼我收到錯誤Unknown column 'tbl_downloads.itemid' in 'on clause'

LEFT JOIN適用於temp1temp2。如果格式化查詢,如下所示的問題將變得更加清晰:

SELECT ... 
FROM tbl_downloads, 
(temp1 LEFT JOIN temp2 ON tbl_downloads.itemid=temp2.itemid) 
... 

因此tbl_downloads不在ON條款的範圍。

+0

你不應該混合隱連接和明確連接(使用'加入'關鍵字) – 2013-04-10 13:23:24