これは私のデータベーススキーマです:
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 つのクエリを実行する必要がありますか?