我试图添加一个票务系统到一个定制的后端,为网站的其他部分提供动力。不过,我在订票方面遇到了一点麻烦(一旦有人回复)。我对MySQL相当陌生,不太确定如何继续下去。
目前,我有以下几点:
SELECT * FROM tbl_tickets ORDER BY ti_date_last_reply DESC, ti_date_raised DESC LIMIT 0, 20以上操作正常,但如果提出了新的票证,则现有的回复将出现在上面。
我在ti_status中存储了4种票证状态-- Open (一张新票证)、 replied (管理员回复了票证)、(客户已回复或添加了更多信息到票证中)和Closed (票证已关闭)。
我想要的是,如果票务状态是Customer-Reply Open(最早的),则MySQL可以通过ti_date_raised对它们进行排序,然后将ti_date_last_reply中找到的添加到正确的时间框架中。离开回答了,关闭了出现在这些查询下面(从最老到最年轻)但是回答了超过关闭了
示例(我在这里使用日期/时间,但在脚本中使用Unix时间):
Date Raised | Date Replied | Status
----------------------------------------------------------
2011-01-30-20-30 | - | Open
2011-01-31-01-00 | 2011-02-01-09-30 | Customer-Reply
2011-02-01-10-30 | - | Open
2011-02-01-20-00 | 2011-02-01-20-30 | Answered
2011-02-01-21-00 | 2011-02-01-20-35 | Closed这样的事情有可能吗?
发布于 2011-02-02 05:58:28
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号并将状态(和排序号)存储在第二个表中将提高一个数量级的性能。
https://stackoverflow.com/questions/4871103
复制相似问题