加入两个选择查询,但一个被分组

时间:2015-07-13 14:04:42

标签: mysql

我有一张(入口)售票表,上面有 ticket_code timestamp_processed 事件代码。

即:

ticket_code         event             timestamp_processed
---------------------------------------------------------
44185909829105549   TICKET_ACCEPTED   1434636748

现在我想计算每个事件的发生次数='TICKET_ACCEPTED',直到指定的时间范围结束。

我使用此查询:

SELECT ticket_code, COUNT(ticket_code) count 
FROM rest_history 
WHERE timestamp_processed <= :endTime AND event = 'TICKET_ACCEPTED' 
GROUP BY ticket_code

现在我想只使用startTime获取特定时间范围的count和ticket_codes。

以下是获取特定时间范围内所有ticket_codes的查询:

SELECT ticket_code 
FROM rest_history 
WHERE timestamp_processed >= :startTime AND 
timestamp_processed <= :endTime AND 
event = 'TICKET_ACCEPTED'

现在我想INNER JOIN两个查询或使用subselect构建一个,但我无法得到正确的解决方案。有人可以给我一个暗示吗?

更新

最后,我想要一个GROUP BY ticket_code,其中每个ticket_code的每次出现的个别计数在特定时间范围内具有event ='TICKET_ACCEPTED',但计数值应该包括直到endFrame的所有出现,而不仅仅是自“startTime”以来

即:

[ticket_code] => 1434636748 [count] => 3
[ticket_code] => 3434636745 [count] => 1
[ticket_code] => 2434636546 [count] => 10

2 个答案:

答案 0 :(得分:1)

可能会加入桌子而不是自己。未经测试但是这样的事情: -

<script>
    $(document).ready(function(){
        $('#sMonth').change(function(){
            <?php $viewType = 'Current'; ?>
        }).change();
        $('#sReportURL').change(function(){
            <?php $viewType = 'Archived'; ?>
        }).change();
    });
</script>

答案 1 :(得分:0)

我认为这样可行:

select t1.ticket_code, t1.count from
(SELECT ticket_code, max(timestamp_processed) lasttime, COUNT(ticket_code) count 
FROM rest_history 
WHERE timestamp_processed <= :endTime AND event = 'TICKET_ACCEPTED' 
GROUP BY ticket_code) as t1
where t1.lasttime >= :startTime

通过使用max(timestamp),我们确保任何带有timestamp_processed&gt; = starTime的故障单都包含在子查询中的最大时间戳中,以便它通过外部查询的测试。