这是编写三个自然连接的正确方法吗? :
SELECT C.name, P.name
FROM client C NATURAL JOIN order O NATURAL JOIN product P
WHERE O.date > '15.02.2011'
答案 0 :(得分:17)
这确实是自然连接的典型语法。但是,并非所有数据库都支持自然连接(例如,我不相信SQLServer支持它),我不相信有自然连接的ANSI标准。
请注意,自然连接通常被认为是危险的并且需要避免 - 这是因为它们模糊了查询所依赖的连接关系,并且可能导致查询的含义在数据模型中发生变化被改变了。
答案 1 :(得分:1)
要检查所选SQL产品不支持的语法,请使用Mimer SQL-92 validator。您应该发现order
和date
是保留字。分别将它们更改为my_order
和my_date
,然后您将发现它们是有效的Transitional SQL-92语法。
答案 2 :(得分:0)
使用此语法被认为是危险的,因为已经提到过。请考虑以下示例: T1(身份证,姓名,年龄) T2(身份,年龄,城市)
SELECT T1.id, T1.name, T1.age, T2.age
FROM T1 NATURAL JOIN T2
哪个列应该用于加入?身份或年龄?它没有定义。每个供应商都可以用自己的方式来解决这些问题。
请考虑使用传统的连接语法,而不是此语法:
SELECT T1.....
FROM T1 INNER JOIN T2 on T1.id=T2.id