'users'(id、username)、
'photos'(id、user_id、name)、 ' photos_comments
'(id、photo_id、user_id、text)、'photos_likes'(id、photo_id、user_id、テスト)。
アップロードされたすべての写真のすべてのユーザーのすべてのコメントといいねの合計を計算したいと思います。そのために私はクエリを作成しようとしています:
SELECT users.*,
(SELECT SUM(count) as rating FROM(
SELECT COUNT(*) as count FROM photos_likes
WHERE photos_likes.photo_id IN (SELECT photos.id FROM photos WHERE photos.user_id = users.id)
UNION
SELECT COUNT(*) as count FROM photos_comments
WHERE photos_comments.photo_id IN (SELECT photos.id FROM photos WHERE photos.user_id = users.id)
) as total_rating) as rating FROM users
'WHERE句の不明なusers.id列'エラーを返します。したがって、ほとんどの内部クエリでユーザーテーブルが表示されないようです。別の同様のクエリが正常に機能するため、なぜ発生するのか理解できません。
SELECT users.*,
(SELECT COUNT(*) as count FROM photos_likes
WHERE photos_likes.photo_id IN (SELECT photos.id FROM photos WHERE photos.user_id = users.id)) as likes_count,
(SELECT COUNT(*) as count FROM photos_comments
WHERE photos_comments.photo_id IN (SELECT photos.id FROM photos WHERE photos.user_id = users.id)) as comments_count FROM users
このクエリでは、ほとんどの内部クエリのユーザーテーブル行からIDを取得できます。なぜそれがそのように機能しているのですか?手伝ってくれてありがとう。