嗨我为“通知”制作了一个表格,例如,这里有不同问题的不同问题的时间(这不是所有的值,但我认为这足以理解我的问题)
id | userid | itemid | messagesent | messageupdate | messageseen |
int | int | int | time() | time () | time() |
然后我需要按时间排序,但这些值在不同的列上
qtres7 = $db->execute_query("select * from notifications where itemid =? OR userid=? ORDER BY messagesent asc",array($itemid,$userid));
任何想法都会受到赞赏,我已经找到了一些关于订单的信息,但是我可以“混合”结果并按照最近到最旧的顺序排列,无论哪个列都是时间..
例如,如果我有3个项目,其中(0000001)旧的和(00000003)其较新的
id | userid | itemid | messagesent | messageupdate | messageseen | status | status2 |
1 | 12 | 120 | 0000001 | ------- | 0000005 | 3 | 1 |
2 | 12 | 121 | 0000001 | 0000003 | ------- | 2 | 1 |
3 | 12 | 122 | 0000003 | ------- | ------- | 1 | 2 |
例如,在这个例子中,我为每个内部的每个内部做回声
if ($userid = $actualuser && $status == 1) { echo $row style1}
if ($userid = $actualuser && $status == 2) { echo $row style2}
if ($userid = $actualuser && $status == 3) { echo $row style3}
if ($userid = $actualuser && $status2 == 1) { echo $row style4}
if ($userid = $actualuser && $status2 == 2) { echo $row style5}
我通过messagesent订购 - 我得到的结果就是这个
也许我有一个错误,因为这不是一个真正的回声,它是我拥有的一个巨大的桌子,试图恢复。
item 3 style 1 - 0000003 -------
item 3 style 5 - 0000003 -------
item 1 style 2 - 0000001 0000005
item 2 style 3 - 0000001 -------
item 1 style 4 - 0000001 0000005
item 2 style 4 - 0000001 -------
问题是第2项通知,因为看到的消息应该在顶部。像
item 1 style 2 - 0000001 0000005
item 1 style 4 - 0000001 0000005
item 3 style 1 - 0000003 -------
item 3 style 5 - 0000003 -------
item 2 style 3 - 0000001 -------
item 2 style 4 - 0000001 -------
也许我的每个循环实际上都是问题..但是这样我得到的所有这个问题就是我可以根据时间设置订单
不,我不想创建一个新的新表,只为这个订单问题更改所有内容。
答案 0 :(得分:1)
测试它:
ORDER BY GREATEST(`messagesent`,`messageupdate `,`messageseen`)
答案 1 :(得分:1)
您可以使用union statement和group by子句的组合。
select
n.*,
x.time
from (
select
x.id
min( x.time ) as `time`
from (
select
id,
messagesent as `time`
from notifications
union all
select
id,
messageupdate
from notifications
union all
select
id,
messageseen
from notifications
) x
group by x.id
) x
left join notifications n on n.id = x.id
order by x.time
或者,您可以使用MySQL的least和greatest函数来获得相同的效果:
select
*
from notifications
order by least( messagesent, messageupdate, messageseen )
答案 2 :(得分:0)
尝试
"select * from notifications where itemid =? OR userid=? ORDER BY messagesent ASC, date_added DESC";