我的数据库中有两个表:
tickets
ticket_updates
每个表都有一个名为ticketnumber
的列匹配。 ticket_updates
中有时会有多行,tickets
我希望能够显示来自tickets
status = 'Completed'
的行数,但是今天已完成的行
ticket_updates
表中的每一行都有一个datetime
列
由于ticket_updates
中的每一行tickets
中有多行,因此需要从datetime
中选择最新的ticket_updates
答案 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