加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Mysql查询最近一行的连接表

发布时间:2020-12-13 22:26:14 所属栏目:PHP教程 来源:网络整理
导读:我有一个类别的页面,他们工作正常,直到我加入. 类别显示如下: category 1———————–0———-0 discussion 1 by someone category 2———————–0———-0 discussion 2 by someoneelse 现在它在讨论的地方,我需要根据它的discussion_id显示发布到
我有一个类别的页面,他们工作正常,直到我加入.

类别显示如下:

category 1———————–0———-0
discussion 1 by someone

category 2———————–0———-0
discussion 2 by someoneelse

现在它在讨论的地方,我需要根据它的discussion_id显示发布到该类别的最后一次讨论.我已经尝试过ORDER BY … DESC,但它按类别名称排序,而不是讨论名称和发布者.

$sql = "SELECT *,COUNT(d.cat_id) as count 
         FROM discussions as d 
         LEFT JOIN categories c ON (c.cat_id = d.cat_id) 
         RIGHT JOIN soldiers s ON (s.uid = d.discussion_poster) 
         GROUP BY d.cat_id";
 $result = query($sql);  


while (($row = mysqli_fetch_assoc($result)) != false) {       
   $cat_id = $row['cat_id']; 
   $discussion_id = $row['discussion_id'];
   $cat_title = $row['cat_title'];
   $discussion_title = $row['discussion_title']; 
   $discussion_time = $row['discussion_time'];
   $count = $row['count'];
   $discussion_poster_id = $row['discussion_poster'];
   $discussion_poster = $row['soldier'];
}

解决方法

$sql = "
SELECT *
FROM categories c
INNER JOIN
(
   SELECT MAX(discussion_id) discussion_id,COUNT(discussion_id) as count,cat_id
   FROM
   discussions
   GROUP BY
   cat_id
) as d1
ON (c.cat_id = d1.cat_id)
INNER JOIN discussions as d
ON (d1.discussion_id = d.discussion_id)
INNER JOIN soldiers s
ON (s.uid = d.discussion_poster)
GROUP BY d.cat_id";

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读