如何将选择语句连接在一起
Posted
技术标签:
【中文标题】如何将选择语句连接在一起【英文标题】:How to join select statements together 【发布时间】:2019-07-04 03:46:07 【问题描述】:我有一个包含 3 个不同表的示例数据库,customers
、orders
、orderdetails
。
任务是显示客户表中的客户名称和地址,然后按订单 ID 显示每个订单的总金额。订单详细信息有多次订单 ID,它是按单位 x 价格计算的,所以我必须在执行计算后将它们相加。
Customers 有一个字段 customerid,我可以用它来加入具有相同字段的订单,orders 表有 orderid,我可以用它来加入 orderdetails 并对订单总额求和,但我不知道如何放置信息一起。客户表没有计算总订单的字段,只有customerid。所以,我试图从 3 个表中捏在一起,其中有一些相关的列,但不是每个表中都存在。
我可以执行 2 个单独的选择语句,每个语句都按照我的预期执行,但我一直在尝试将信息汇总在一起,但一直无法做到。
SELECT c.CustomerID, c.[Address], o.orderid
FROM Customers c
Join Orders o
ON c.CustomerID = o.CustomerID
--how to join these together?
SELECT od.orderid, SUM(od.UnitPrice*od.Quantity) as 'Subtotal'
FROM OrderDetails od
Join Orders o
ON od.OrderID = o.OrderID
Group by od.OrderID
我正在尝试使用以下信息来展示这一点:
Customer Name, Address, OrderID, and Order Total.
【问题讨论】:
这里有一个提示,尝试一次将所有三个表加入...SELECT ..... FROM Customers c JOIN Orders o ON c.CustomerID = o.CustomerID JOIN OrderDetails od ON od.OrderID = o.OrderID
我建议 UNION
感谢您的回复。我会试试这个。
【参考方案1】:
试试这个 -
SELECT c.CustomerID, c.[Address], od.orderid, SUM(od.UnitPrice* od.Quantity) as 'Subtotal'
FROM OrderDetails od
Join Orders o
ON od.OrderID = o.OrderID
join Customers c ON c.CustomerID = o.CustomerID
Group by c.CustomerID, c.[Address], od.OrderID
【讨论】:
How do I ask and answer homework questions? 谢谢 Mukesh,这就是我想要做的。这对我有帮助。【参考方案2】:您可以将三个表连接在一起,如下所示。我正在使用派生表 OrderDetails 来计算 orderId 级别的小计。
SELECT c.CustomerID, c.[Address], o.orderid, SUM(od.Subtotal) as 'Subtotal'
FROM Customers c
Join Orders o
ON c.CustomerID = o.CustomerID
join (SELECT orderid, SUM(od.UnitPrice*od.Quantity) as Subtotal from OrderDetails od GROUP BY OrderId) as OrderDetails od
ON od.OrderID = o.OrderID
group by c.CustomerID, c.[Address], o.orderid
【讨论】:
How do I ask and answer homework questions? @MJoy,对不起。没有意识到作业问题部分。 没问题,感谢您的回答。 Mukesh 在下面为我解决了这个问题。【参考方案3】:Mukesh 的回答直接让我完成了,我能够通过以下方式将 customerid 排除在结果之外。这很有帮助,我感谢大家的意见。
SELECT c.CompanyName, c.[Address], od.orderid, SUM(od.UnitPrice* od.Quantity) as
'Subtotal'
FROM OrderDetails od
Join Orders o
ON od.OrderID = o.OrderID
join Customers c ON c.CustomerID = o.CustomerID
Group by c.CompanyName, c.[Address], od.OrderID
【讨论】:
以上是关于如何将选择语句连接在一起的主要内容,如果未能解决你的问题,请参考以下文章
如何将变量值与 select 语句的结果一起放入 sql 表中?