我有这个SQL查询:
SELECT t.contact_name as contact_name, t.contact_email as contact_email,
t.ticketnumber as ticketnumber, t.subject as subject
FROM tickets t JOIN ticket_updates tu ON t.ticketnumber = tu.ticketnumber
WHERE tu.type = 'update' AND
t.status = 'Awaiting Customer' AND
tu.datetime <= '2014-10-27 11:18:19'
GROUP BY tu.ticketnumber
order by tu.datetime DESC LIMIT 0,1
当tickets
中的最后一行超过48小时之前,应显示ticket_updates
的记录
如果48小时内status
内未添加任何内容,我希望能够自动更改tickets
中的ticket_updates
ticket_updates
中的我有3行,其中包含以下日期时间:
2014-11-22 00:00:00
2014-10-26 00:00:00
2014-10-28 00:00:00
所以最后一个是在48小时内,但它在上面的查询中显示的结果是什么时候不应该
答案 0 :(得分:0)
您正在加入所有机票更新,然后丢弃过去48小时内的更新。您希望使用最新更新作为加入的条件。
尝试用此替换您的联接。
join (select Max (tu.datetime), tu.ticketnumber from ticket_updates tu
group by tu.ticketnumber) tu
on tu.t.ticketnumber = tu.ticketnumber
答案 1 :(得分:0)
您可以使用内部选择(未测试)来执行此操作:
SELECT t.contact_name as contact_name,
t.contact_email as contact_email,
t.ticketnumber as ticketnumber,
t.subject as subject
FROM tickets t
JOIN ticket_updates tu ON t.ticketnumber = tu.ticketnumber
WHERE t.status = 'Awaiting Customer'
AND t.ticketnumber NOT IN
(
-- returns ticketnumbers that have recent updates
SELECT recentUpdates.ticketnumber
FROM ticket_updates recentUpdates
WHERE recentUpdates.type = 'update' AND recentUpdates.datetime => '2014-10-27 11:18:19'
)
GROUP BY tu.ticketnumber
ORDER BY tu.datetime DESC LIMIT 0,1;