这个错误是什么意思“在NATURAL join中使用的列不能有限定符”

时间:2013-02-25 14:27:22

标签: sql oracle11g

执行下面的代码后,我收到ORA-25155错误

SELECT p.prod_id, prod_name, prod_list_price,quantity_sold,cust_last_name
FROM products p NATURAL JOIN sales s NATURAL JOIN customer c
WHERE prod_id = 148;

2 个答案:

答案 0 :(得分:4)

正如评论中所建议的那样,这个ORA-25155错误表明您正在对列名称“p.prod_id”进行限定,而不仅仅是“prod_id”。这就是触发你错误的原因。

尝试完全正常工作SQL Fiddle code。您的查询应该是:

SELECT prod_id, prod_name, prod_list_price,quantity_sold,cust_last_name
  FROM products
       NATURAL JOIN sales
       NATURAL JOIN customer
 WHERE prod_id = 148;

多个表上的NATURAL JOIN将连接一对表,然后将第三个表连接到结果,依此类推。 NATURAL JOIN语法没有显式连接谓词,因此不使用限定符。

答案 1 :(得分:1)

Oracle中的

natural join在每个表中具有通用名称的列上连接两个表。因此,在连接之后,您不应该引用自然与别名连接的表之间通用的列,因为别名是多余的。

这类似于using()在join子句中的工作方式。