Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何将select语句连接在一起_Sql Server - Fatal编程技术网

Sql server 如何将select语句连接在一起

Sql server 如何将select语句连接在一起,sql-server,Sql Server,我有一个示例数据库,包含3个不同的表、客户、订单和订单详细信息 任务是显示客户表中的客户名称和地址,然后按订单id显示每个订单的总金额。订单详细信息有订单id多次,并且是按单价x计算的,因此我必须在执行计算后对这些进行求和 Customers有一个字段customerid,我可以用它连接具有相同字段的订单,orders表有orderid,我可以用它连接orderdetails和合计订单总额,但我不知道如何将信息放在一起。Customers表没有用于计算总订单的字段,只有customerid。所以

我有一个示例数据库,包含3个不同的表、客户、订单和订单详细信息

任务是显示客户表中的客户名称和地址,然后按订单id显示每个订单的总金额。订单详细信息有订单id多次,并且是按单价x计算的,因此我必须在执行计算后对这些进行求和

Customers有一个字段customerid,我可以用它连接具有相同字段的订单,orders表有orderid,我可以用它连接orderdetails和合计订单总额,但我不知道如何将信息放在一起。Customers表没有用于计算总订单的字段,只有customerid。所以,我试图从3个表中拼凑出一些相关的列,但不是所有的列都存在于每个表中

我可以做两个单独的select语句,每个语句都做我期望的事情,但我一直在尝试收集信息,但一直无法完成

  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,对不起。没有意识到作业问题部分。没问题,谢谢你的回答。穆克什已经在下面为我解决了这个问题。谢谢你,穆克什,这就是我想要做的。这对我很有帮助。