如何将选择语句连接在一起

Posted

技术标签:

【中文标题】如何将选择语句连接在一起【英文标题】:How to join select statements together 【发布时间】:2019-07-04 03:46:07 【问题描述】:

我有一个包含 3 个不同表的示例数据库,customersordersorderdetails

任务是显示客户表中的客户名称和地址,然后按订单 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 表中?

将数据读取器与 sqltransactions 一起使用

PHP:如何让我的 IF 语句与 PDO 选择一起使用?

如何根据case语句在连接多个表时选择一行

如何使用 MySQL 连接语句选择与链接表中的多个值匹配的记录?

powerdesigner如何生成java代码跟mysql语句?