mysql - 在第二个表中按日期排序结果

标签 mysql select group-by sql-order-by

一些背景......

我目前有一个客户区,供客户登录并查看他们的工作进度并留下任何评论等。在客户区,我有一个管理区,我可以在其中登录并查看所有工作。一切正常,但我希望能够将它整理得更整洁一些。

数据库由 4 个表组成,其中 2 个与此查询相关...Jobs 和 Posts。目前,该列表仅使用以下内容显示每个客户的完整工作列表:

$result = mysql_query("SELECT * FROM Jobs ORDER BY date DESC"); 

然后:

<a href="jobdetail.php?clientid='. $row['ClientID'].'&jobid='.$row['JobNumber'].'">'. $row['Username'].' - '. $row['ClientID'].'.'.$row['JobNumber'].' - '.$row['Description'].' - '.$row['Status'].'</a>

如您所见,详细信息从数据库中获取并回显,然后整个内容链接到从其 ClientID 和 JobNumber 加载作业的页面。所有客户端都可以有一个工作编号 1,例如 ClientID:12345 和 ClientID:12346 都可以有 JobNumber1。目前一切正常,但我希望在顶部的 Posts 表中拥有与其相关的最新帖子的 Job,然后是下一个最新的,依此类推。

经过一些研究,我得到了这个:

SELECT
Jobs.*
FROM Jobs
LEFT JOIN Posts ON Posts.JobNumber=Jobs.JobNumber
GROUP BY
Jobs.ClientID, Jobs.JobNumber
ORDER BY Posts.PostDate

虽然我得到了所有的结果,但我并没有按照发布日期的顺序得到它们。我有一种感觉,这是因为我实际上并没有从 Posts 表中提取 PostDate 值,但我已经尝试了很多负载,但我没有设法使任何东西正常工作!

如果有人能给我任何指示,我将不胜感激。提前谢谢你。

最佳答案

成功了:

SELECT
c.ClientID
, j.JobNumber , j.Username , j.Description , j.ClientID , j.Status , j.AdminUnread
, MAX(p.PostDate) as postedOn
FROM Clients c
INNER JOIN Jobs j ON c.ClientID=j.ClientID
LEFT JOIN Posts p ON j.JobNumber=p.JobNumber AND c.ClientID=p.ClientID
GROUP BY
c.ClientID
, j.JobNumber
ORDER BY
postedOn DESC, c.ClientID, j.JobNumber DESC

关于mysql - 在第二个表中按日期排序结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14410715/

相关文章:

mysql - SQL - 交叉 'Crossed' 表

mysql - DATETIME 字段的默认值

mysql - max in where子句更新mysql

php - MYSQL - 从不同的数据库中选择

javascript - 两个选择框 - 按选择加载

python - 两列中的 pd.groupby sum() 函数不起作用

MYSQL - 返回 GROUP BY 之前的最新记录

c# - EntityFramework .Take() 随着时间的推移性能下降

python - 按年份分组删除一些变量

mysql - 根据单列中的值选择列