首页 > 解决方案 > 在mysql中过滤重新打开的票

问题描述

我可能在这里遇到了一些愚蠢的事情,但是我正在尝试做的是获取数据库中处于打开/待定状态的票,但我无法找到包含在某个时候关闭的票的解决方案然后重新打开。所以在这里的表格中: 在此处输入图像描述

票 10727 将不符合要求,因为如果我这样过滤,它将显示为已关闭:

ticket_id NOT in 
(select zts.ticket_id
from zendesk_ticket_status zts
join zendesk_ticket zt on zts.ticket_id = zt.ticket_id 
where zts.status IN ('closed', 'solved')) 

如何确保包含门票?基本上添加某种异常,以便我还可以在状态为 ('open','pending') 和 updated_at > updated_at 时获得票证 = '已解决'?

标签: mysql

解决方案


可能有更有效的方法可以做到这一点,但你可以这样做:

SELECT DISTINCT zts.ticket_id
FROM zendesk_ticket zts
LEFT JOIN (
  SELECT ticket_id, MAX(updated_at) AS close_date 
  FROM zendesk_ticket 
  WHERE status IN ('closed', 'solved')
  GROUP BY ticket_id
) AS closed_tickets ON zts.ticket_id = closed_tickets.ticket_id
WHERE closed_tickets.ticket_id IS NULL
OR zts.updated_at > closed_tickets.close_date

closed_tickets子查询应该为每张票获取它的最大日期或closedsolved然后LEFT JOIN将结果发送到主表,以便仅获取子查询中没有条目或更新更新的票


推荐阅读