2012-06-18 36 views
1

這是我試圖執行的MySQL查詢。它保持失敗,並出現錯誤: 字段列表中的未知列'staff_tbl.mainrank'。這怎麼可能?我總是在MySql查詢中遇到錯誤:錯誤1054:字段列表中未知的列'列名'

DROP TEMPORARY TABLE IF EXISTS `staff_tbl`; 
CREATE TEMPORARY TABLE staff_tbl(childrank TEXT, mainrank TEXT); 

INSERT INTO staff_tbl 
SELECT permissions_inheritance.child, permissions_inheritance.parent 
FROM permissions_inheritance; 

SELECT  authme.username, permissions_inheritance.child,  
permissions_inheritance.parent, staff_tbl.mainrank 
FROM  authme 
INNER JOIN permissions_inheritance ON authme.username = permissions_inheritance.child 
INNER JOIN staff_tbl alies2 ON staff_tbl.mainrank = permissions_inheritance.parent; 


DROP TABLE `staff_tbl`; 

如果你能幫助我,我將不勝感激。我把我的頭髮都拉出來了。所以你們是我最後的希望。我仍然是一個新手:)

回答

1

在最後SELECT你有最後一次加入錯誤。你加入staff_tbl並給它一個別名(alies2)。您必須在隨後的語句(alies2.mainrank = permissions_inheritance.parent而不是staff_tbl.mainrank = permissions_inheritance.parent)中使用該別名,但您沒有。

試着寫你的最後SELECT這樣的:

SELECT  a.username, p.child, p.parent, s.mainrank 
FROM  authme a 
INNER JOIN permissions_inheritance p ON a.username = p.child 
INNER JOIN staff_tbl s ON s.mainrank = p.parent; 

我解決了這個上面。我還爲每個表設置了一個別名,使查詢更短,因此更具可讀性。

+0

非常感謝,它的工作!如果你不介意,你能解釋爲什麼這個工作? – Krimson

+0

@VidhuShresthBhatnagar看到我編輯的答案。 –

0

MySQL允許創建兩個同名的表,如果其中一個是臨時

在查詢中您試圖加入臨時表,但MySQL加入另一個非臨時表staff_tbl表,其中不包含mainrank字段。

所以,先放下這個非臨時表。

相關問題