SQL 多重连接 - 它们到底是如何工作的?

问题描述 投票:0回答:1

我非常确定这在各种 SQL 实现中都适用。假设我在两个表之间有多对多关系:

Customer: id, name

有很多:

Order: id, description, total_price

这种关系位于联结表中:

Customer_Order: order_date, customer_id, order_id

现在我想编写 SQL 查询将所有这些连接在一起,提及客户姓名、订单描述、总价和订单日期:

SELECT name, description, total_price FROM Customer
JOIN Customer_Order ON Customer_Order.customer_id = Customer.id
JOIN Order = Order.id = Customer_Order.order_id

这一切都很好。如果我们更改顺序,使其变为

FROM Customer_Order JOIN Customer
或将
Order
表放在前面,此查询也将起作用。为什么会这样呢?我在某处读到
JOIN
的工作方式类似于算术运算符(+、* 等),采用 2 个操作数,您可以将运算符链接在一起,这样您就可以得到:例如 2+3+5。按照这个逻辑,首先我们必须计算 2+3,然后将结果加上 5。和 JOIN 一样吗?

在幕后,是否必须先完成第一个 JOIN 才能进行第二个 JOIN?所以基本上,第一个 JOIN 将从其左侧和右侧的 2 个操作数创建一个表。然后,第二个 JOIN 将将该结果表作为其左操作数并执行通常的连接。基本上,我想了解多个 JOIN 在幕后是如何工作的。

sql join
1个回答
0
投票

其他选项以关系代数为中心,但 SQL 是基于集合论的。

帮助您入门的链接:

使用集合论理解SQL

SQL的可视化解释

© www.soinside.com 2019 - 2024. All rights reserved.