SQL Multiple Joins - 它们如何正常工作?

时间:2015-01-07 17:28:51

标签: sql join

我很确定这可以在各种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将从它左右两个操作数中创建一个表。然后,第二个JOIN将该结果表作为其左操作数并执行通常的连接。基本上,我想了解多个JOIN如何在幕后工作。

1 个答案:

答案 0 :(得分:0)

在许多方面,我认为ORM是现代编程的祸根。释放一大批做不到准备的编码员。哦,不要轻视,你问一下关于集合理论的问题。这可能是以关系代数为中心的其他选项,但SQL基本上是基于理论的。这里有几个链接可以帮助您入门

Using set theory to understand SQL

A visual explanation of SQL