0

これは私のデータベーススキーマです:

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 つのクエリを実行する必要がありますか?

4

0 に答える 0