我使用此查询按月和年检查票证组
SELECT
MONTH((lastmodified)) as month,
YEAR((lastmodified)) as year,
COUNT(num_of_tickets) as tickets
FROM visitors_2013
GROUP BY
MONTH((lastmodified)),
YEAR((lastmodified))
返回类似
的内容Array
(
[0] => Array
(
[month] => 1
[year] => 2013
[tickets] => 1521
)
[1] => Array
(
[month] => 2
[year] => 2013
[tickets] => 513
)
[2] => Array
(
[month] => 12
[year] => 2012
[tickets] => 146
)
)
我把它放在php函数中,这样我就可以每年获取数据(数据每年存储在一个单独的表中)。 我在2013年和2014年两次调用函数get_ticket_per_year($ year)
Array
(
[0] => Array
(
[month] => 1
[year] => 2013
[tickets] => 1521
)
[1] => Array
(
[month] => 2
[year] => 2013
[tickets] => 513
)
[2] => Array
(
[month] => 12
[year] => 2012
[tickets] => 146
)
)
Array
(
[0] => Array
(
[month] => 12
[year] => 2013
[tickets] => 26
)
)
我想通过在图表中绘制每年每月的数据来比较另一个表(visitor_2014)的月份总票数。为此,我使用morris js库。 这是我需要的结果
data: [ {
m: 'dec',
2012: 146,
2013: 26
}, {
m: 'jan',
2013: 1521,
2014:
}],
那么如何将mysql查询结合起来以便进行一次查询
SELECT
prevTbl.MONTH((lastmodified)) as prev_month,
prevTbl.YEAR((lastmodified)) as prev_year,
prevTbl.COUNT(num_of_tickets) as prev_tickets,
currTbl.MONTH((lastmodified)) as curr_month,
currTbl.YEAR((lastmodified)) as curr_year,
currTbl.COUNT(num_of_tickets) as curr_tickets
FROM visitors_2013 prevTbl, visitors_2014 currTbl
GROUP BY
MONTH((lastmodified)),
YEAR((lastmodified))
答案 0 :(得分:1)
加入您的疑问:
SELECT * FROM ( [your first query here] ) AS data1
LEFT JOIN ( [your second query here] ) AS data2
ON [your relation between the two query here]
在您的情况下(未经测试):
SELECT * FROM (
SELECT
`num_of_tickets` AS `tickets2013`,
MONTH(`lastmodified`) AS `month`
FROM `visitors_2013`
GROUP BY
MONTH(`lastmodified`)
) AS `data2013`
LEFT JOIN (
SELECT
`num_of_tickets` AS `tickets2014`,
MONTH(`lastmodified`) AS `month`
FROM `visitors_2014`
GROUP BY
MONTH(`lastmodified`)
) AS `data2014`
ON (
`data2013`.`month`=`data2014`.`month`
)
为什么不将(主动使用的)数据存储在同一个表中(更简单)?