Sql server 如何将select语句连接在一起
我有一个示例数据库,包含3个不同的表、客户、订单和订单详细信息 任务是显示客户表中的客户名称和地址,然后按订单id显示每个订单的总金额。订单详细信息有订单id多次,并且是按单价x计算的,因此我必须在执行计算后对这些进行求和 Customers有一个字段customerid,我可以用它连接具有相同字段的订单,orders表有orderid,我可以用它连接orderdetails和合计订单总额,但我不知道如何将信息放在一起。Customers表没有用于计算总订单的字段,只有customerid。所以,我试图从3个表中拼凑出一些相关的列,但不是所有的列都存在于每个表中 我可以做两个单独的select语句,每个语句都做我期望的事情,但我一直在尝试收集信息,但一直无法完成Sql server 如何将select语句连接在一起,sql-server,Sql Server,我有一个示例数据库,包含3个不同的表、客户、订单和订单详细信息 任务是显示客户表中的客户名称和地址,然后按订单id显示每个订单的总金额。订单详细信息有订单id多次,并且是按单价x计算的,因此我必须在执行计算后对这些进行求和 Customers有一个字段customerid,我可以用它连接具有相同字段的订单,orders表有orderid,我可以用它连接orderdetails和合计订单总额,但我不知道如何将信息放在一起。Customers表没有用于计算总订单的字段,只有customerid。所以
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.
您可以将三个表连接在一起,如下所示。我正在使用派生表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
试试这个-
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
穆克什的回答直接把我带到了终点,我可以通过下面的步骤将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
这里有一个提示,尝试一次连接所有三个表。。。选择从客户c加入订单o ON c.CustomerID=o.CustomerID加入订单详细信息od ON od.OrderID=o.OrderIDI建议Union谢谢您的回复。我要试试这个。@MJoy,对不起。没有意识到作业问题部分。没问题,谢谢你的回答。穆克什已经在下面为我解决了这个问题。谢谢你,穆克什,这就是我想要做的。这对我很有帮助。