mysql - 帮助 MySQL 连接语句

标签 mysql join

我刚刚建立了一个网站,并意识到我需要拥有前 3 名最高评价的专辑。我还没有建立跟踪收视率的东西。评级是单独存储的。谁能告诉我如何将这些组合在一起。

SELECT id, name FROM albums LIMIT 3

SELECT rating FROM ratings WHERE url=CONCAT('albums/show/', album.id)

让我稍微充实一下。我需要取回以下内容:

来自专辑表。身份证,姓名。我需要从评分表中取回平均评分。 ROUND((评分+评分+评分)/总评分)

收视率。用户可以对我网站上的所有内容进行评分,因此我有一个通用的评分表。评级与它适用的页面的 url 一起存储。因此,要获得专辑评级,我需要有“albums/show/{album_id}”。事后看来,我应该有一个 type 和 id 字段,但现在有点晚了,马上就要吃午饭了。

非常感谢任何帮助。

最佳答案

SELECT
  a.id,
  a.name,
  AVG(r.rating) AS average
FROM
    albums a
  LEFT JOIN
    ratings r
  ON
    r.url = CONCAT('albums/show/', a.id)
GROUP BY
  a.id
ORDER BY
  average DESC
LIMIT 3

(未经测试,参见 AVG())

关于mysql - 帮助 MySQL 连接语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2757537/

相关文章:

php - 为什么我无法使用 post 请求使用 jquery 更新数据库中的数据?

mysql - 在一对多关系上构建 SQL 查询

mysql - SQLSTATE 错误语法错误或访问冲突 : 1066 Not unique table/alias: 'users_sessions'

php - 搜索多行mysql

android - 直接从 Android 访问 MySQL

具有特定排序规则的 MySQL 常量值

mysql - 多列的主键?

php - 如何使用单个查询从两个表中选择数据

mysql - 为什么 COUNT 匹配两个 JOIN 值,但只指定了一个特定值

mysql - 根据日期(在表中)将 tableA 的列值设置为表的 id