2013-03-10 111 views
1

我想一起得到这两个查询的结果,但无法弄清楚如何合并它们。目标是按产品获得每月的总销售额。我有店内购物和在线订单。这是第一个查询,从网上订单每月获得的总销售额:MySQL我可以将这两个查询合并在一起吗?

SELECT YEAR(orderDate) AS "SalesYear" 
    , MONTH(orderDate) AS "SalesMonth" 
    , SUM(orderTotal) AS "TotalSales" 
    , products.productID 
FROM orders 
INNER JOIN orderdetails ON orders.orderID = orderDetails.orderID 
INNER JOIN products ON orderDetails.productID = products.productID 
GROUP BY productID, YEAR(orderDate) , MONTH(orderDate) 
ORDER BY YEAR(orderDate) , MONTH(orderDate) 

下面是从商店购买获取每月总销售额按产品查询:

SELECT YEAR(orderDate) AS "SalesYear" 
    , MONTH(orderDate) AS "SalesMonth" 
    , SUM(orderTotal) AS "TotalSales" 
    , products.productID 
FROM in_storepurchase 
INNER JOIN instorepurchasedetails 
    ON in_storepurchase.isPurchaseID = instorepurchasedetails.isPurchaseID 
INNER JOIN products 
    ON instorepurchasedetails.productID = products.productID 
GROUP BY productID, YEAR(orderDate) , MONTH(orderDate) 
ORDER BY YEAR(orderDate) , MONTH(orderDate) 

任何帮助的我如何能够将这个查询放入一个查询中,以便我可以在单个表上获得所有结果,我们将不胜感激。

回答

1

当然,你可以使用UNION:

SELECT 
    YEAR(t.orderDate) AS "SalesYear", MONTH(t.orderDate) AS "SalesMonth", SUM(t.orderTotal) AS "TotalSales", productID 
FROM 
(
select 1 
    UNION ALL 
select 2 
) as t 
GROUP BY 
    t.productID, YEAR(t.orderDate) , MONTH(t.orderDate) 
+0

OK听起来愚蠢的,但什么是静置的T? – 2013-03-10 19:05:56

+0

谢谢,我明白了。 – 2013-03-10 19:09:38

+0

似乎要放下一行,具体取决于哪个选择说明最先出现。有任何想法吗? – 2013-03-10 19:48:09