这是我的数据库架构:
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
最好的查询是什么?
我有下面的查询,但它不能很好地工作,因为在结果的“标签”列中,我得到如下内容:“[BLOB - 38B]”。
SELECT
Post.id AS post_id,
Post.title AS post_title,
Post.body AS post_body,
GROUP_CONCAT(CONCAT(Tag.id, "|", Tag.title) SEPARATOR '#') AS tags,
COUNT(Comment.id) AS comment_count
FROM Post
LEFT JOIN Comment ON Post.id = Comment.id_post
LEFT JOIN Post_Tag ON Post.id = Post_Tag.id_post
LEFT JOIN Tag ON Tag.id = Post_Tag.id_tag
GROUP BY Post.id
ORDER BY Post.date ASC
这是执行此操作的正确方法还是我需要执行 1 次查询以获取所有帖子并为每个帖子执行 1 次查询以获取所有关联的标签?