我的数据库中有两个表:
tickets
ticket_updates
每个表都有一个名为 ticketnumber
匹配的列。 ticket_updates
中有时有多行,其中只有一行tickets
我希望能够显示tickets
status = 'Completed'
但今天完成的位置的行数
对于ticket_updates
表中的每一行,都有一个datetime
列
由于tickets
中每 1 行ticket_updates
有多行,因此它也需要从ticket_updates
中选择最新的datetime
你应该能够通过一个简单的连接和一点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()
返回的值(只是今天的日期(正确进行比较。
MySQL date()
函数仅返回日期和时间的日期部分。
编辑:更正了代码以解释@mituw16正确指出的多重关系
我将假设有一个键链接这两个表。你可以尝试这样的事情...
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