Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL多对多表:获取结果数_Mysql - Fatal编程技术网

MySQL多对多表:获取结果数

MySQL多对多表:获取结果数,mysql,Mysql,我有一个由三个表组成的数据库:用户照片喜欢基本轮廓如下: USERS: user_id name PHOTOS: photo_id title url user_id LIKES: user_id photo_id 我想做的是让一个用户喜欢很多照片,并且有很多用户喜欢的照片 显然,我想按喜欢的数量来订购这些照片,这可以通过JOIN和COUNT() 我需要做的是返回每张照片上的“喜欢”的数量,但我不知道。我该怎么做 我目前的SQL是: SELECT photos.photo_id,

我有一个由三个表组成的数据库:
用户
照片
喜欢
基本轮廓如下:

USERS:
user_id
name


PHOTOS:
photo_id
title
url
user_id

LIKES:
user_id
photo_id
我想做的是让一个用户喜欢很多照片,并且有很多用户喜欢的照片

显然,我想按喜欢的数量来订购这些照片,这可以通过
JOIN
COUNT()

我需要做的是返回每张照片上的“喜欢”的数量,但我不知道。我该怎么做

我目前的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
只需将
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
只需将
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
试试这个

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
试试这个

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

只需将
COUNT(*)
添加到您的选择列表中即可?facepalm这是其中的一天。。。你可能应该把它作为答案贴出来!只需将
COUNT(*)
添加到您的选择列表中即可?facepalm这是其中的一天。。。你可能应该把它作为答案贴出来!虽然有一个轻微的错误,但这是我在帖子中的错误,因此我将在帖子中修复它,并在这个答案中为您修复它!虽然有一个轻微的错误,但这是我在帖子中的错误,因此我将在帖子中修复它,并在这个答案中为您修复它!