【问题标题】:How do i sub query two joins?我如何子查询两个连接?
【发布时间】:2016-10-05 21:23:03
【问题描述】:

我创建了两个查询,它们都返回彼此独立的所需结果。我正在尝试加入他们以使返回的值为 customerName、Amount Ordered 和 Amount Paid。

目前,此查询有效,但仅返回 customerName。如何让查询返回其他两列?

SELECT c1.customerName
FROM 
    (SELECT cc.customerName, ROUND(SUM(od.priceEach * od.quantityOrdered), 2) as '$ Amount Ordered'
     FROM customers cc
     INNER JOIN orders o ON o.customerNumber = cc.customerNumber
     INNER JOIN orderdetails od ON od.orderNumber = o.orderNumber
     GROUP BY cc.customerName
    ) c1
 INNER JOIN
    (SELECT c.customerName, ROUND(SUM(p.amount), 2) as 'Total $ Amount Paid'
     FROM customers c
     INNER JOIN payments p ON p.customerNumber = c.customerNumber
     GROUP BY c.customerName
    ) c2
WHERE c1.customerName = c2.customerName
GROUP BY c1.customerName
ORDER BY c1.customerName;

【问题讨论】:

    标签: mysql join subquery


    【解决方案1】:

    这应该选择其他列

    SELECT c1.customerName, c1.Amount_Ordered as '$ Amount Ordered', c2.Total_Amount_Paid  as 'Total $ Amount Paid'
    FROM 
        (SELECT cc.customerName, ROUND(SUM(od.priceEach * od.quantityOrdered), 2) as Amount_Ordered
         FROM customers cc
         INNER JOIN orders o ON o.customerNumber = cc.customerNumber
         INNER JOIN orderdetails od ON od.orderNumber = o.orderNumber
         GROUP BY cc.customerName
        ) c1
     INNER JOIN
        (SELECT c.customerName, ROUND(SUM(p.amount), 2) as  Total_Amount_Paid
         FROM customers c
         INNER JOIN payments p ON p.customerNumber = c.customerNumber
         GROUP BY c.customerName
        ) c2
    WHERE c1.customerName = c2.customerName
    GROUP BY c1.customerName
    ORDER BY c1.customerName;
    

    【讨论】:

      【解决方案2】:

      只需将它们添加到选择部分:

      SELECT c1.customerName, C1.amountOrdered, C2.amountPaid FROM ...
      

      还有一点建议 - 不要在列名中使用空格或 $ 等特殊符号,这是不好的做法。我认为mySql甚至允许它是一个错误

      【讨论】:

      • 感谢您的提示。我不知道,因为我是 SQL 新手。
      猜你喜欢
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      相关资源
      最近更新 更多