-3

这是我的数据库架构:

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

有没有更有效的方法来做到这一点?

4

1 回答 1

0

1. GROUP BY 不用那么多列:

GROUP BY p.id

将起作用 - 您将获得相应帖子的评论数量。

2.当您选择 10 个帖子时,将 LIMIT 添加到查询中:

LIMIT 0,10
于 2013-05-17T08:42:42.463 回答