这是我的数据库架构:
Post:
id
title
body
date
Tag:
id
title
Post_Tag:
id
id_post
id_tag
Comment:
id
id_post
body
date
帖子和标签之间有很多关系。
我需要在主页上打印最新的10个帖子:
<a href="post.php?id=ID_POST">POST_TITLE</a>
POST_BODY
<a href="tag.php?id=ID_TAG_1"> TAG_TITLE_1 </a>
<a href="tag.php?id=ID_TAG_2"> TAG_TITLE_2 </a>
<a href="tag.php?id=ID_TAG_3"> TAG_TITLE_3 </a>
COMMENTS_NUMBER
我写了这个查询但是在每个帖子中为php提取标签有点复杂:
SELECT p.title, p.id, p.date, t.title, t.id, COUNT(c.id)
FROM post p
LEFT JOIN post_tag pt
ON p.id=pt.id_post
LEFT JOIN tag t
ON t.id=pt.id_tag
LEFT JOIN comment c
ON p.id=c.id_post
GROUP BY p.title, p.id, p.date, t.title
ORDER BY p.date DESC
有更有效的方法吗?
答案 0 :(得分:0)
1.在GROUP BY中不需要使用这么多列:
GROUP BY p.id
将起作用 - 您将获得相应帖子的评论数量。
2.在选择10个帖子时,将LIMIT添加到查询中:
LIMIT 0,10