SQL:在INNER JOIN中模糊定义的ORA-00918列

时间:2016-11-29 16:41:27

标签: oracle

无论我对INNER JOIN语句做什么

,我都会收到此错误

这是我的代码:

"Company","Name","Job Title"
xxxxxx,"JACK NICHOLSON","Manager"
yyyyyy,"BRAD PITT","Accountant"

我不明白这是什么问题。

PS。如果需要,我将提供更多代码

1 个答案:

答案 0 :(得分:2)

当前问题是,多个表中至少存在Package_CodeSite_Code,但您的select未指定要从哪个表返回数据。是的,您知道您正在对这些列进行内部联接,因此返回哪个表的值并不重要,但SQL语法不允许Oracle进行推断。一般来说,我建议你总是为每一列都添加别名,以便明确特定属性来自哪个表,以便在将属性添加到碰巧具有相同属性的其他表时不会破坏代码名。

SELECT tbl_Holiday_Details.Package_Code, 
       Description, 
       Duration, 
       tbl_Site_Visted.Site_Code
  FROM tbl_Holiday_Details
       INNER JOIN tbl_Site_Visted
          ON tbl_Holiday_Details.Package_Code = tbl_Site_Visted.Package_Code
       INNER JOIN tbl_Site_Visted
          ON tbl_Site_Details.Site_Code = tbl_Site_Visted.Site_Code
假设Description,{p>仅在三个表中的一个表中定义,{p>将起作用。我也会为DurationDescription添加别名,但我不知道应该使用哪些表格。当然,我通常会使用更简单的别名(例如,Duration表示tsv)而不是完整的表名。

如果要避免对列进行别名,可以使用tbl_Site_Visited子句而不是USING子句

ON