1

我在一家托管公司工作,我们经常收到关于安装、新域、延迟修复等的请求。为了大致了解仍然开放的内容,我决定制作一个非常简单的票务系统。我有一点php知识和一点MySQL知识。目前,我们将根据客户的电子邮件和电话自行提交票证。

我创建了以下 SQL 结构:

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

我现在想制作显示所有现有票证的概览表。以默认状态插入票证。并发时间戳将是添加工单的时间。每次工单移动到下一个状态时,都会添加一个带有时间戳的新状态。最新状态始终是当前状态。

我不知道如何创建一个查询来获取每张票的最新状态。一个简单的连接将返回与其拥有的状态数量一样多的票。我想创建一个连接,但只显示结果是状态的时间戳对于某个票证是最新的。

4

1 回答 1

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
于 2012-08-20T08:15:11.170 回答