Hello all :)我想知道是否有办法告诉数据库查看架构并推断出JOIN谓词:
+--------------+ +---------------+
| prices | | products |
+--------------+ +---------------+
| price_id (PK)| |-1| product_id(PK)|
| prod_id |*-| | weight |
| shop | +---------------+
| unit_price |
| qty |
+--------------+
有没有办法(最好在Oracle 10g中)来自:
SELECT * FROM prices JOIN product ON prices.prod_id = products.product_id
为:
SELECT * FROM prices
IMPLICIT JOIN
product
答案 0 :(得分:3)
最接近不写实际连接条件的是自然连接。
select * from t1 natural join t2
Oracle将查找具有相同名称的列并通过它们加入(在您的情况下不是这样)。请参阅documentation on the SELECT statement:
自然连接基于两个表中具有相同名称的所有列。它从两个表中选择相关列中具有相等值的行。如果具有相同名称的两列不具有兼容的数据类型,则会引发错误
这种做法非常糟糕,我强烈建议不要在任何环境中使用
答案 1 :(得分:2)
你不应该这样做。一些数据库系统允许你,但如果你修改fk(即添加外键)怎么办?您应该始终说明要加入的内容以避免出现问题。大多数数据库系统甚至不允许你进行隐式连接(好!)。