不是唯一的表/别名:'movie_direction' [关闭]

Posted

技术标签:

【中文标题】不是唯一的表/别名:\'movie_direction\' [关闭]【英文标题】:Not unique table/alias: 'movie_direction' [closed]不是唯一的表/别名:'movie_direction' [关闭] 【发布时间】:2018-04-24 10:07:24 【问题描述】:

schema 我正在尝试获取詹姆斯卡梅隆导演的电影。

select mov_title 
from movie 
inner join movie_direction on movie.mov_id = movie_direction.dir_id
inner join movie_direction on director 
where director.fname='james' and director.lname='Cameron';

【问题讨论】:

你能分享你的表架构吗? 你为什么要加入movie_direction表两次? 我认为您想加入director 表以进行第二次加入,而不是再次尝试加入movie_direction。你on 子句看起来也很可疑。 movie_direction 表包含电影 ID 和导演 ID,导演表包含导演 ID 和导演姓名,电影表包含电影标题 @Saima..我已经更新了我的答案中的查询检查它 【参考方案1】:

您不能在同一查询中引用movie_direction 表两次,除非在至少一个连接中为其指定别名。在您的一个或两个连接中提供别名。

inner join movie_direction md1 on your condition
inner join movie_direction md2 on your condition

你的查询应该是这样的

SELECT 
 *
 FROM (movie INNER JOIN movie_direction ON movie.mov_id = 
 movie_direction.mov_id) INNER JOIN director ON movie_direction.dir_id = 
 director.dir_id
 WHERE    director.dir_fname='james' and director.dir_lname='Cameron';

【讨论】:

完全不清楚他们为什么要加入movie_direction 两次。我怀疑这只是应用多个谓词的一种乱码尝试。 @Saima..我已经更新了我的答案中的查询检查它 @RajeshPandya 在连接子句中给出语法错误(缺少运算符) @Saima,我错误地输入了表名,我已经更正并仔细检查了它,对我来说工作正常。你在 mysql 中检查查询吗? @RajeshPandya 在 ms-access 中【参考方案2】:

这应该可行:

SELECT 
    mov_title 
FROM 
    movie 
    INNER JOIN 
    movie_direction director
ON 
    movie.mov_id = director.mov_id 
WHERE 
    director.fname='james' 
AND 
    director.lname='Cameron');

您的查询中的错误是您将 mov_id 与 dir_id 连接起来,并且只需要一个连接。

【讨论】:

这将产生一个关于director 不是表或别名的错误。 我的错。使用别名更新了查询。 我更倾向于第二次加入是一个失败,他们打算将movie_direction 加入到director 表中。当然,如果 OP 更加努力地描述他们的问题,就会清楚得多。 上述查询有效吗?如果没有,请分享示例数据和预期结果。 @RahulJain 要求输入 director.fname 的参数值

以上是关于不是唯一的表/别名:'movie_direction' [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

不是唯一的表/别名

错误代码:1066。不是唯一的表/别名:'circle_call_prefixes'

不是唯一的表/别名:'movie_direction' [关闭]

发生数据库错误错误号:1066 不是唯一的表/别名:[重复]

错误代码:1066。不是唯一的表/别名:'ordertbl' - 无法执行内部连接 ​​MYSQL

为啥错误 #1066 - 不是唯一的表/别名:'cat_rapoarte'