0

Hello all :) I'm wondering if there is way to tell the database to look at the schema and infer the JOIN predicate:

+--------------+     +---------------+
| prices       |     | products      |
+--------------+     +---------------+
| price_id (PK)|  |-1| product_id(PK)|
| prod_id      |*-|  | weight        |
| shop         |     +---------------+
| unit_price   |
| qty          |
+--------------+

Is there a way (preferably in Oracle 10g) to go from:

SELECT * FROM prices JOIN product ON prices.prod_id = products.product_id

to:

SELECT * FROM pricesIMPLICIT JOINproduct

4

2 回答 2

3

最接近不写实际连接条件的是自然连接。

select * from t1 natural join t2

Oracle 将查找具有相同名称的列并通过它们连接(在您的情况下不是这样)。请参阅SELECT 语句的文档

自然连接基于两个表中同名的所有列。它从两个表中选择相关列中具有相同值的行。如果具有相同名称的两列不具有兼容的数据类型,则会引发错误

这是非常糟糕的做法,我强烈建议不要在任何环境中使用它

于 2013-07-31T06:21:30.723 回答
2

你不应该那样做。一些数据库系统允许您这样做,但是如果您修改 fk(即添加外键)怎么办?您应该始终说明要加入的内容以避免出现问题。大多数数据库系统甚至不允许您进行隐式连接(好!)。

于 2013-07-30T13:59:09.933 回答