2012-12-26 39 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不允许您在联接中动态指定表。您需要重新考虑如何表示数据。 –