0

私は3つのテーブルのデータベースを持っています:USERS PHOTOS LIKESそして基本的なアウトラインは次のようになります:

USERS:
user_id
name


PHOTOS:
photo_id
title
url
user_id

LIKES:
user_id
photo_id

私がやりたいことは、ユーザーが多くの写真を好きになり、多くのユーザーに写真を気に入ってもらえるようにすることです。

明らかに、これらの写真をいいねの数で並べたいと思いますJOINCOUNT()

私が理解できないことは、各写真の「いいね」の数を返すことです。どうすればいいですか?

私の現在のSQLは次のとおりです。

SELECT 
  photos.photo_id,
  photos.title,
  photos.url,
  users.name
FROM photos
LEFT OUTER JOIN users
ON users.user_id = photos.user_id
LEFT OUTER JOIN likes
ON likes.photo_id = photos.photo_id
GROUP BY likes.photo_id
ORDER BY COUNT(*) DESC
LIMIT 20
4

2 に答える 2

2

COUNT(*)選択リストに追加するだけです:

SELECT 
  photos.photo_id,
  photos.title,
  photos.url,
  users.name,
  COUNT(*)
FROM photos
LEFT OUTER JOIN users
ON users.user_id = photos.user_id
LEFT OUTER JOIN likes
ON likes.photo_id = photos.photo_id
GROUP BY likes.photo_id
ORDER BY COUNT(*) DESC
LIMIT 20
于 2012-06-05T10:12:56.077 に答える
1

これを試して、

SELECT 
    photos.photo_id,
    photos.title,
    photos.url,
    users.name, 
    COUNT(*) AS COUNT 
FROM photos, users 
WHERE users.user_id = photos.user_id
LEFT OUTER JOIN likes
ON likes.photo_id = photos.photo_id
GROUP BY likes.photo_id ORDER BY COUNT(likes.photo_id) DESC
于 2012-06-05T10:25:08.850 に答える