2012-12-26 27 views
0

我有sql查詢來從多個表中選擇值。我如何離開選擇查詢作爲表的連接值?

我用左連接,但我有一個問題。

我想要左連接另一個表,但問題是這個表名是關於同一查詢中列的值。

這是查詢:

SELECT tags_assign.*,COUNT(*) AS total from tags_assign 
    LEFT JOIN tags ON tags.id = tags_assign.tags_id 
    LEFT JOIN tags_assign.module module ON module.id = tags_assign.module_id 
    WHERE tags.name = 'music theory'; 

當我執行此查詢時,出現此錯誤:

SELECT命令拒絕用戶jason'@'62.100.08.01「對錶 」模塊'database_tags_assign.sql

那麼請問我該如何解決這個問題?

回答

0

通過身份驗證的用戶(您傳遞給connect函數的用戶)無權從該數據庫或表中獲取SELECT。您需要進入控制面板並授權用戶名執行該操作,否則您使用的用戶名/密碼錯誤。

+0

查詢工作我要刪除這個「LEFT JOIN tags_assign.module module ON module.id = tags_assign.module_id」 – Jason4Ever

+0

您有權限訪問'tags_assign'數據庫嗎?有這樣的數據庫嗎?或者你的意思是寫'左連接tags_assign作爲模塊module.id = module_id' –

+0

你好,我想從sql是使用tags_assign.module值作爲列在左連接,beacuese tags_assign.module是一列,它的值是關於同一個數據庫中的表,但我的問題在於數據庫將左連接中的tags_assign.module看作表名,所以它不返回它的值作爲真正的表名; – Jason4Ever

0

我的猜測是所有有表在同一個數據庫中並沒有查詢一個錯字:

SELECT tags_assign.*,COUNT(*) AS total from tags_assign 
    LEFT JOIN tags ON tags.id = tags_assign.tags_id 
    LEFT JOIN tags_assign module ON module.id = tags_assign.module_id 
    WHERE tags.name = 'music theory' 

也就是說,而非tags_assign.module module只是使用tags_assign module「。我的猜測是沒有tags_assign數據庫。

+0

你好,我想從sql中得到的是使用tags_assign.module值作爲左連接中的列,beacuese tags_assign.module是一個列,它的值是關於同一個數據庫中的一個表,但是我的問題在於數據庫看到tags_assign.module在左連接中作爲表名,所以它不會返回它的值作爲真正的表名; – Jason4Ever

+0

MySql不允許您在聯接中動態指定表。您需要重新考慮如何表示數據。 –