作成中のクエリに問題があります。これは非常に頻繁に発生するテーブル構造のように思われるので、助けていただければ幸いです。
Facebookの構造に似た3つのテーブルがあるとしましょう。Users
、Wall Posts
、およびComments
。ユーザーはウォール投稿を作成し、他のウォール投稿にコメントできます。
ユーザーのページで、ユーザーの壁の投稿と、その投稿にあるコメントの数を表示したいと思います。これは私がこれまでに持っているものです
Wall Post
テーブルへの内部結合としてユーザー ID を使用してテーブルをクエリしUser
ます。これにより、そのユーザーのページのウォール投稿の結果セットが得られます。次に、その結果セットをループ処理し、各結果セットからウォール ポスト ID を取得して、そのウォール ポスト IDComment
のコメント数をテーブルにクエリします。これは機能しますが、db を 2 回ヒットする必要があります。1 つのクエリでこれを行う方法を考えられる人はいますか?
最初のクエリの例:
SELECT wallPost.*, user.currentDefault, user.displayName, user.userName
FROM wallPost
INNER JOIN user ON user.id = wallPost.sourceUserId
WHERE wallPost.recipientId = ? ORDER BY wallPost.id DESC
2 番目のクエリの例:
SELECT COUNT(id) AS count
FROM comment
WHERE wallPostId = ?