根据上次修改列比较两个表


Compare two tables based on lastmodified column?

我正在使用此查询按月和年检查工单组

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
        )
)

我喜欢通过在图表中绘制每年每月的数据来比较另一个表 (visitors_2014( 中的月-年总票数。为此,我正在使用莫里斯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))

加入您的查询:

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`
)

为什么不将(主动使用的(数据存储在同一个表中(更简单(?