Php 定制后端票务系统MySQL查询

Php 定制后端票务系统MySQL查询,php,mysql,Php,Mysql,我正在尝试添加一个票务系统到一个定制的后端,为网站的其余部分提供动力。我在订票方面遇到了一些麻烦(一旦得到答复)。我是MySQL的新手,不太清楚如何继续 目前,我有以下几点: SELECT * FROM tbl_tickets ORDER BY ti_date_last_reply DESC, ti_date_raised DESC LIMIT 0, 20 上述操作可以正常工作,但如果提出新的问题,则现有的答复将显示在其上方 我在ti_status-打开(新车票)、回复(管理员已回复车票)、客

我正在尝试添加一个票务系统到一个定制的后端,为网站的其余部分提供动力。我在订票方面遇到了一些麻烦(一旦得到答复)。我是MySQL的新手,不太清楚如何继续

目前,我有以下几点:

SELECT * FROM tbl_tickets ORDER BY ti_date_last_reply DESC, ti_date_raised DESC LIMIT 0, 20
上述操作可以正常工作,但如果提出新的问题,则现有的答复将显示在其上方

我在
ti_status
-打开(新车票)、回复(管理员已回复车票)、客户回复(客户已回复或向车票添加更多信息)和关闭(车票关闭)中存储了4个车票状态

我想要的是MySQL通过
ti_date\u raised
订购,如果票证状态为Open(最早的优先),然后添加客户回复,该回复可在
ti_date\u last\u Reply
中找到,以插入正确的时间框架。让已回答的已关闭的显示在这些查询的下方(从大到小)-但已回答的位于已关闭的

示例(我在这里使用日期/时间,但在脚本中使用Unix时间):

这可能吗

SELECT * 
FROM tbl_tickets
ORDER BY FIND_IN_SET(ti_status,'Open,Customer-Reply,Answered,Closed'),
    IF(ti_status = 'Customer-Reply', ti_date_last_reply, ti_date_raised) DESC
LIMIT 0, 20
ti_status
更改为状态ID号,并将状态(和排序号)存储在第二个表中,将提高性能一个数量级


ti_status
更改为状态ID号,并将状态(和排序号)存储在第二个表中,将提高性能一个数量级。

状态是查找表的外键吗?如果是这样的话,你可以先用它来订购,然后按所需日期订购。状态在包含票据的同一个表中。即,ti_状态、ti_提出日期、ti_最后回复日期均在同一表格中。答复保存在另一个表中,但引用了上面的主票证表。原始消息至少与TIAtStasuSt保持在同一个表中,是<代码> TyStase< /Cord>数字?NO-我可以考虑更改为数字。它会导致更快的查询吗?状态是查找表的外键吗?如果是这样的话,你可以先用它来订购,然后按所需日期订购。状态在包含票据的同一个表中。即,ti_状态、ti_提出日期、ti_最后回复日期均在同一表格中。答复保存在另一个表中,但引用了上面的主票证表。原始消息至少与TIAtStasuSt保持在同一个表中,是<代码> TyStase< /Cord>数字?NO-我可以考虑更改为数字。它会导致更快的查询吗?
SELECT * 
FROM tbl_tickets
ORDER BY FIND_IN_SET(ti_status,'Open,Customer-Reply,Answered,Closed'),
    IF(ti_status = 'Customer-Reply', ti_date_last_reply, ti_date_raised) DESC
LIMIT 0, 20