Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按两个字段排序_Php_Mysql - Fatal编程技术网

Php 按两个字段排序

Php 按两个字段排序,php,mysql,Php,Mysql,下面的输入通过名为“datesubmitted”的时间戳字段按相反的时间顺序对提交进行排序。此字段位于名为“submission”的MySQL表中 另一个MySQL表“comment”有另一个称为“datecommented”的时间戳字段 每个提交只有一个“datesubmitted”,但可以有多个注释,每个注释都有不同的“datecommented” 如何按“datesubmitted”和每个人最后的“datecommented”对提交的内容进行排序?换句话说,我希望列表顶部显示最近提交的条目

下面的输入通过名为“datesubmitted”的时间戳字段按相反的时间顺序对提交进行排序。此字段位于名为“submission”的MySQL表中

另一个MySQL表“comment”有另一个称为“datecommented”的时间戳字段

每个提交只有一个“datesubmitted”,但可以有多个注释,每个注释都有不同的“datecommented”

如何按“datesubmitted”和每个人最后的“datecommented”对提交的内容进行排序?换句话说,我希望列表顶部显示最近提交的条目或带有最近注释的条目,以最近发生的为准

提前感谢,

约翰

$sqlStr=“选择
s、 罗吉尼
,s.title
,s.url
,s.displayurl
,s.date提交
,l.username
,s.submissionid
,COUNT(c.commentid)countComments
从…起
意见书
内部的
参加
登录名l
在…上
s、 loginid=l.loginid
左外
参加
评论c
在…上
s、 submissionid=c.submissionid
团体
通过
s、 提交人
命令
通过
s、 提交日期描述
极限
10";           
$tzFrom=新日期时区(“美国/纽约”);
$tzTo=新日期时区(“美国/凤凰城”);
//echo$dt->格式(日期\u RFC822);
$result=mysql\u查询($sqlStr);
$arr=array();
回声“;
而($row=mysql\u fetch\u数组($result)){
$dt=新日期时间($row[“datesubmitted”],$tzFrom);
$dt->setTimezone($tzTo);
回声';
回显'.$row[“displayurl”].';
回声';
回声';
echo“提交人在.$dt->格式('F j,Y&\nb\sp&\nb\sp g:ia');
回声';
回声';
回声';
回声';
}
回声“;

您可以通过用逗号分隔多列来排序。所以你可以按s.datesubmitted DESC,c.datecommented DESC下单。此外,如果两个方向相同(asc/desc),您可以在结尾说一次。查询将按列表中的第一列排序,然后按下一列排序,以便分组排序

听起来你想有条件地订购,这取决于哪个日期更高。包括此
订购人

SELECT s.loginid, s.title, s.url, s.displayurl, s.datesubmitted, l.username,
  s.submissionid, COUNT(c.commentid) countComments, 
  GREATEST(s.datesubmitted, COALESCE(MAX(c.datecommented), s.datesubmitted)) AS most_recent
FROM submission s
INNER JOIN login l ON s.loginid = l.loginid
LEFT OUTER JOIN comment c ON s.submissionid = c.submissionid
GROUP BY s.submissionid
ORDER BY most_recent DESC
LIMIT 10
ORDER BY CASE WHEN datesubmitted > datecommented 
         THEN datesubmitted 
         ELSE datecommented END  DESC

您缺少
左侧
外部
之间的换行符;-)我试过了,但没用。但我感谢你为我所做的努力。
ORDER BY CASE WHEN datesubmitted > datecommented 
         THEN datesubmitted 
         ELSE datecommented END  DESC