【问题标题】:join three tables in sql server 2005在 sql server 2005 中连接三个表
【发布时间】:2010-01-20 09:25:24
【问题描述】:

到目前为止,我已经使用了两个表的连接,但现在我想连接三个表,如下图所示


(来源:microsoft.com

我尝试加入两个表,

SELECT O.OrderID,O.CustID,O.OrderTotal,C.Name from Orders
as O inner join Customers as C on O.CustID=C.CustID 

如何用这个加入第三张桌子......任何建议......

【问题讨论】:

  • 你想从表格中选择什么?
  • @个人客户订单详情
  • aah...您正在将数据库规范化击败:)(在OrderTotalOrders
  • 我无法得到你的评论...
  • [Orders].[OrderTotal][OrderItems].[OrderAmount] 的总和。您将需要更新 [OrderItems] 中的每一行以获得新的总和 ...

标签: sql-server-2005 join


【解决方案1】:

你也这样做,第三张桌子:

SELECT O.OrderID,O.CustID,O.OrderTotal,C.Name, OC.OrderAmount
FROM Orders as O 
INNER JOIN Customers as C 
  ON O.CustID=C.CustID 
INNER JOIN OrderItems as OC
  ON O.OrderID=OC.OrderID 

【讨论】:

    【解决方案2】:

    您可以在末尾添加另一个 JOIN:

    inner join OrderItems as OI ON O.OrderID= OI.OrderID
    

    请注意,将为订单中的每个订单项目返回顶级订单信息(订单 ID、客户 ID、订单总额和客户名称)。 因此,根据场景,您可能希望先检索顶层数据,然后单独返回所有订单项目详细信息,以节省返回大量重复数据。视情况而定,但认为值得一提。

    【讨论】:

      【解决方案3】:
          Select Customers.Name
          From OrderItems                            --      (Table 1)
          INNER JOIN Orders                          --      (Table 2)
          ON OrderItems.OrderID = Orders.OrderID
          INNER JOIN Customers                       --      (Table 3)
          ON Orders.CustID = Customers.CustID
          Where Customers.CustID = 2                 --      This will give you the name of the second customer in the third table using JOINS
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-18
        • 1970-01-01
        • 1970-01-01
        • 2010-10-25
        • 1970-01-01
        • 2011-01-08
        • 1970-01-01
        • 2010-10-26
        相关资源
        最近更新 更多