0

我有一个包含三个表的数据库:USERS PHOTOS LIKES基本大纲如下:

USERS:
user_id
name


PHOTOS:
photo_id
title
url
user_id

LIKES:
user_id
photo_id

我想要做的是让用户喜欢很多照片并拥有很多用户喜欢的照片。

显然,我想按喜欢的数量来排序这些照片,我可以用 aJOINCOUNT()

我无法弄清楚我需要做的是返回每张照片的“喜欢”数量。我该怎么做?

我当前的 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 回答