适用于最新状态的MySQL查询

时间:2012-08-20 08:08:01

标签: php mysql join status

我为托管公司工作,我们经常收到安装,新域名,滞后修复等请求。为了对仍然开放的内容进行一些概述,我决定制作一个非常简单的票务系统。我有一些PHP知识和一些MySQL知识。目前我们将根据客户的电子邮件和电话自行提交门票。

我创建了以下SQL结构:

|| TICKETS  ||    || STATUSSES  ||    || STATUS-CODES  ||
--------------    ----------------    -------------------
| ID         |    |  ticket_id   |    | ID              |
| cust_name  |    |  status_id   |    | status_txt      |
| cust_cntct |    |  datetime    |    -------------------
| subject    |    ----------------
| message    |    
--------------     

我现在想要显示所有现有票证的overviw表。将插入具有默认状态的故障单。同意时间戳将是添加故障单的时间。每次票证移动到下一个状态时,将添加带有时间戳的新状态。最新状态始终是当前状态。

我无法弄清楚如何创建一个查询来获取具有最新状态的每张票证。简单连接将返回票证的次数与其拥有的状态量一样多。我想创建一个连接,但只显示结果,状态的时间戳是特定票证的最新状态。

1 个答案:

答案 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