如何做3桌自然加入?

时间:2011-02-28 20:53:58

标签: mysql sql

这是编写三个自然连接的正确方法吗? :

SELECT C.name, P.name 
FROM client C NATURAL JOIN order O NATURAL JOIN product P 
WHERE O.date > '15.02.2011'

3 个答案:

答案 0 :(得分:17)

这确实是自然连接的典型语法。但是,并非所有数据库都支持自然连接(例如,我不相信SQLServer支持它),我不相信有自然连接的ANSI标准。

请注意,自然连接通常被认为是危险的并且需要避免 - 这是因为它们模糊了查询所依赖的连接关系,并且可能导致查询的含义在数据模型中发生变化被改变了。

答案 1 :(得分:1)

要检查所选SQL产品不支持的语法,请使用Mimer SQL-92 validator。您应该发现orderdate是保留字。分别将它们更改为my_ordermy_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