3

执行下面的代码后,我得到一个 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;
4

2 回答 2

5

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

试试这个完整的SQL Fiddle 代码。您的查询应该是:

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语法没有明确的连接谓词,因此没有使用限定符。

于 2013-02-25T15:05:38.163 回答
2

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

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

于 2013-02-25T15:20:31.067 回答