-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 に答える