复杂的MySQL连接语句

时间:2016-03-16 07:27:29

标签: mysql group-by inner-join

我知道这里有很多MySQL帖子,每个帖子都特定于海报使用。我有一个相当复杂的加入情况。

我有3个表,我正在尝试聚合两列数据。我在ProductID和ProductionMonth上进行分组。

我几乎就在那里,但现在我的数据集的日期列分组存在问题。

我的数据输出目前没有填写特定月份没有的数据。我需要它至少显示零和日期。

现在输出是这样的:

<pre>
Products    TOTAL   CANCELLED   Product Name    ProductType     ProductionMonth 
    2        32          5        Advantage        VSC Auto       2016-02-02
    2        26          3        Advantage        VSC Auto       2016-01-01
    2        31          2        Advantage        VSC Auto       2015-12-01
    16        5          1          ASC          VSC Auto         2016-02-01
    16        4          4          ASC          VSC Auto         2016-01-01
    17        0          0       MenuVantage    Menu Software     NULL
    21       12          0          CSO             Credit        2016-02-01
    21       24          0          CSO             Credit        2016-01-01
</pre>

但即使没有与该记录相关联的日期,我也需要数据也包括日期。这是我目前的代码:

<pre>
SELECT P.Products, Inv.TOTAL,Inv.CANCELLED, Pur.ProductName AS 'Product Name',ProductType,ProductionMonth
FROM Dealership_Products P
LEFT JOIN (SELECT ProductsID, SUM(Total) AS TOTAL, SUM(Cancelled) AS CANCELLED,ProductionMonth
          FROM Monthly_Production_Numbers 
           WHERE DealershipID = '25'
           AND
           ProductionMonth > DATE_SUB(CURDATE(), INTERVAL 1 MONTH) - INTERVAL 3 MONTH
           GROUP BY ProductionMonth,ProductsID) AS Inv
ON P.Products = Inv.ProductsID
LEFT  JOIN (SELECT ProductsID, ProductName AS ProductName, ProductType
            FROM Products 
            GROUP BY ProductsID) AS Pur
ON P.Products = Pur.ProductsID
WHERE DealershipID = '25'
AND
Inactive = 'FALSE'
ORDER BY Products ASC, ProductionMonth DESC
</pre>

正在使用的表:

Dealership_Products
  column (Products)  ->      
Products.ProductsID

Monthly_Production_Numbers   group by(ProductionMonth)&#34;过去3个月&#34;   group by(ProductsID)

产品

由于数据和表格如此复杂,我无法共享所有结构。但主要部分在这里。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如何使用IFNULL?

IFNULL(ProductionMonth,'date-you-want') as ProductionMonth