【问题标题】:Cartesian product to Join笛卡尔积加入
【发布时间】:2014-01-30 22:38:08
【问题描述】:

这是交易,我有这个 SQL 查询

SELECT *
FROM Customers AS C, Orders AS O, Orderlines AS OL
WHERE C.CustomerID = O.CustomerID AND O .OrderID = OL.OrderID

在关系代数中是

Σ(C.CustomerID=O.CustomerID AND O.OrderID=OL.OrderID)(Customers x Orders x Orderlines) .

如何将这个 3 路笛卡尔积“转换”为 Join 关系?

非常感谢。

P.S 如果我对关系代数部分有错误,请纠正我。

【问题讨论】:

  • 啊,关系代数。这样的美好回忆

标签: sql relational-algebra cartesian-product


【解决方案1】:

看起来很简单...

SELECT c.*, o.*, ol.*
FROM Customers c
INNER JOIN Orders o ON c.CustomerId = o.CustomerID
INNER JOIN OrderLines ol ON o.OrderId = ol.OrderId

我建议不要从每个表中选择 *,尤其是考虑到重复的列名。

【讨论】:

    【解决方案2】:
    SELECT *
    FROM Customers AS C
         JOIN Orders AS O ON C.CustomerID = O.CustomerID
         JOIN Orderlines AS OL ON O.OrderID = OL.OrderID
    

    【讨论】:

      猜你喜欢
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      • 2013-07-14
      相关资源
      最近更新 更多