我为托管公司工作,我们经常收到安装,新域名,滞后修复等请求。为了对仍然开放的内容进行一些概述,我决定制作一个非常简单的票务系统。我有一些PHP知识和一些MySQL知识。目前我们将根据客户的电子邮件和电话自行提交门票。
我创建了以下SQL结构:
|| TICKETS || || STATUSSES || || STATUS-CODES ||
-------------- ---------------- -------------------
| ID | | ticket_id | | ID |
| cust_name | | status_id | | status_txt |
| cust_cntct | | datetime | -------------------
| subject | ----------------
| message |
--------------
我现在想要显示所有现有票证的overviw表。将插入具有默认状态的故障单。同意时间戳将是添加故障单的时间。每次票证移动到下一个状态时,将添加带有时间戳的新状态。最新状态始终是当前状态。
我无法弄清楚如何创建一个查询来获取具有最新状态的每张票证。简单连接将返回票证的次数与其拥有的状态量一样多。我想创建一个连接,但只显示结果,状态的时间戳是特定票证的最新状态。
答案 0 :(得分:2)
试试这个:
SELECT a.*, b.`datettime`, d.status_txt
FROM tickets a
INNER JOIN statusses b
on a.id = b.ticket_ID
INNER JOIN
(
SELECT ticket_ID, MAX(`datetime`) CurrentTicketDate
FROM Statuses
GROUP BY ticket_ID
) c
ON b.ticket_ID = c.tecket_ID AND
b.`datetime` = c.CurrentTicketDate
INNER JOIN Status_Codes d
on b.status_ID = d.id