【发布时间】:2014-02-13 19:09:21
【问题描述】:
我有三张桌子:- - 订单(给我订单日期) - 订单行项目(让我能够将活动结果链接到订单日期) - 活动项目(给我活动结果)
我正在尝试在图表上绘制结果,并且可以使用以下查询成功地为小于
SELECT
YEAR( od_date ) AS Year,
MONTH( od_date ) AS Month,
test_name,
pd_name,
COUNT( test_result ) AS Passed
FROM tbl_lab_item
INNER JOIN tbl_order_item
ON tbl_order_item.od_item_id = tbl_lab_item.od_item_id
INNER JOIN tbl_order
ON tbl_order.od_id = tbl_order_item.od_id
WHERE tbl_order.od_date >= DATE_SUB(now(), INTERVAL 12 MONTH)
AND test_name = 'Test'
AND pd_name = 'Product'
AND test_result <= 50
AND od_customer_id = '4'
GROUP BY test_name, YEAR(od_date), MONTH(od_date)ASC
我可以使用相同的查询对失败的结果执行类似操作,但在 Select 中使用 Count (test_result) AS Failed,并将 WHERE 条件更改为 >50。
如果可能的话,我想在一个查询中完成另外两件事。
首先,我希望能够将通过和失败合并到同一个查询中,这样我就可以得到月份、通过计数、失败计数。
其次,为了在图表上绘制所有这些,我可能需要显示所有月份,即使没有通过、失败或两者都有结果。根据我对 UNION 的理解,查询需要具有相同的形状,因此我可以将 Null as Failed 添加到 Pass 查询中,反之亦然,但是我如何将其合并为一种让所有月份都显示的方法?
我在这里查看How to get a count even if there are no results corresponding mysql? 以显示所有月份,但是我不知道将其集成到我的查询中。
希望这一切都有意义吗?
【问题讨论】:
标签: mysql sql select count group-by