根据两个MySQL表计算出时间戳/其他数据

时间:2014-05-22 12:04:37

标签: php mysql sql

我的数据库中有两个表:

tickets
ticket_updates

每个表都有一个名为ticketnumber的列匹配。 ticket_updates中有时会有多行,tickets

中只有一行

我希望能够显示来自tickets status = 'Completed'的行数,但是今天已完成的行

ticket_updates表中的每一行都有一个datetime

由于ticket_updates中的每一行tickets中有多行,因此需要从datetime中选择最新的ticket_updates

2 个答案:

答案 0 :(得分:2)

你应该可以通过一个简单的连接和一个小的MySQL日期函数来完成这个:

select
    count(sub.counter)
from
    (
        select distinct
            ti.ticketnumber as counter
        from
            tickets ti
            join ticket_updates tu
                on ti.ticketnumber=tu.ticketnumber
        where
            ti.status='Completed'
            and date(tu.datetime)=curdate()
    ) sub

如果您的日期时间(假设不是实际名称)包含日期和时间信息,您将需要去掉时间组件,以便将其正确地与curdate()返回的值进行比较,date()只是一个日期今天。

MySQL {{1}}函数只返回日期和时间的日期组件。

编辑:修正了代码以解决@ mituw16

正确指出的多重关系

答案 1 :(得分:0)

我将假设有一个关键链接这两个表。你可能会尝试这样的事情......

select count(*) as TicketCount from tickets 
join ticket_updates on ticket_updates.ticketnumber = tickets.ticketnumber 
where tickets.status='Completed' and ticket_updates.datetime = CURDATE()
group by ticket_updates.ticketnumber