mysql - 对于 View 中的每个人?

标签 mysql sql

我有两个不同的表,它们是:

user - uid, name, age, phonenumber

rating - score, raterid, uid

在评分表中,基本上可以有不同的评分者对同一用户进行评分。

Example: raterid 009 gives "10" to uid 001; raterid 008 gives "5" to uid 001.

现在,我正在尝试创建一个显示用户姓名、年龄以及平均分数的 View 。

但是,我是否需要某种“FOR EACH”(例如在触发器中)才能搜索特定“uid”具有的所有分数?

这是到目前为止我的代码,但是我打印了“ERROR FUNCTION”

CREATE VIEW theBestSeller AS
SELECT U.name, U.age, AVG(R.score)
FROM USER U, RATING R
WHERE U.uid = R.uid
GROUP BY AVG(R.score)

有人可以帮助我吗?

最佳答案

首先,学习使用正确的显式join语法。简单规则:永远不要FROM子句中使用逗号。 始终使用显式JOIN。然后你需要正确聚合:

CREATE VIEW theBestSeller AS
    SELECT U.name, U.age, AVG(R.score)
    FROM USER U JOIN
        RATING R
        ON U.uid = R.uid
    GROUP BY U.name, U.age;

关于mysql - 对于 View 中的每个人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37516745/

相关文章:

php - SQL 字符串匹配数字,长度不一

php - 像数组一样从数据库获取值

php - 提交表单后保留所选选项

SQL 将毫秒转换为天、小时、分钟

php - 如何比较 AngularJS 表单数据和 MySQL 数据库 (PHP) 中的值?

C# 从 DataGridView 插入 MySQL 数据后被截断

.net - SQL Server 和 .NET : insert fails (silently! ) 在代码中,但在手动运行时不是

mysql显示记录不在其他登录组中

mysql - 从表中选择记录,其中字段不在 MySql 中不同表的左连接中

Mysql DELETE Where 1=1 AND 2=2