在mysql中创建视图并从多个表执行添加
创建视图并从多个表中添加列值。可能吗在mysql中创建视图并从多个表执行添加,mysql,Mysql,创建视图并从多个表中添加列值。可能吗 Users: ID | FIRST NAME | LASTNAME | 1 | Mark | Lupez | 2 | James | Yap | table1: USER_ID | SCORE | GOAL | 1 | 7 | 9 | 2 | 4 | 6 | table2: USER_ID | SCORE | GOAL | 1 | 4 |
Users:
ID | FIRST NAME | LASTNAME |
1 | Mark | Lupez |
2 | James | Yap |
table1:
USER_ID | SCORE | GOAL |
1 | 7 | 9 |
2 | 4 | 6 |
table2:
USER_ID | SCORE | GOAL |
1 | 4 | 9 |
2 | 7 | 3 |
table3:
USER_ID | SCORE | GOAL |
1 | 2 | 3 |
2 | 3 | 2 |
我想补充一点
表1.得分,表2.得分,表3.得分
在哪里
表1.user\u id,表2.user\u id,表3.user\u id
等于用户表的ID列
所以视图表创建的查询结果如下所示
LASTNAME | FIRST NAME | SCORE | GOAL |
Lupez | Mark | 13 | 21 |
Yap | James | 14 | 11 |
我是mysql新手,所以我对mysql语法的了解非常基础。从多个表中添加数据对我来说是一个非常大的问题…我从您的示例数据中进行了一些查询尝试此查询 (我不知道你为什么分成3张桌子,我认为这不是一个好的设计)
我从您的示例数据中进行了一些查询,请尝试此查询 (我不知道你为什么分成3张桌子,我认为这不是一个好的设计)
首先,为什么有3个单独的表都有相同的列?我觉得这个设计很糟糕。哦,对不起。我这样做是有目的的,但我很高兴知道更多如何使设计更好,,,,,嗯,你可能应该把它们都放在一张桌子上。如果它们之间存在一些差异(可能表示不同类型的匹配),那么可以添加另一个状态列来表示差异。一般来说,为了创建良好的关系设计并避免冗余,您应该在谷歌上搜索数据库规范化的原则。好的设计将在以后尝试编写查询时消除许多问题感谢您的帮助,使我的设计更好。我很感激。首先,为什么您有3个单独的表,都有相同的列?我觉得这个设计很糟糕。哦,对不起。我这样做是有目的的,但我很高兴知道更多如何使设计更好,,,,,嗯,你可能应该把它们都放在一张桌子上。如果它们之间存在一些差异(可能表示不同类型的匹配),那么可以添加另一个状态列来表示差异。一般来说,为了创建良好的关系设计并避免冗余,您应该在谷歌上搜索数据库规范化的原则。好的设计将在以后尝试编写查询时消除许多问题感谢您的帮助使我的设计更好..我对此表示感谢.对此我深表歉意。。因为我是mysql的新手,所以我决定拆分该表,以便在调用查询时能够轻松理解……我尝试了您的代码,结果出现了这个错误
#1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用“[USER\u ID]、SUM(SCORE)[SCORE]、SUM(GOAL)[GOAL]附近的正确语法。
Oh。。。它是replace it's with you column并删除[SCORE],[GOAL]我在difference DBMS上写查询,但它与MySQL的意思相同(意思是我的代码有这样的错误,比如find SUM(column_name),然后设置别名)谢谢。。我接受了你的答案,不仅因为你是正确的,还因为你帮助我把我的设计做好。。。顺便说一下,我按照你的建议改变了我的设计。。。非常感谢,伙计…很抱歉。。因为我是mysql的新手,所以我决定拆分该表,以便在调用查询时能够轻松理解……我尝试了您的代码,结果出现了这个错误#1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用“[USER\u ID]、SUM(SCORE)[SCORE]、SUM(GOAL)[GOAL]附近的正确语法。
Oh。。。它是replace it's with you column并删除[SCORE],[GOAL]我在difference DBMS上写查询,但它与MySQL的意思相同(意思是我的代码有这样的错误,比如find SUM(column_name),然后设置别名)谢谢。。我接受了你的答案,不仅因为你是正确的,还因为你帮助我把我的设计做好。。。顺便说一下,我按照你的建议改变了我的设计。。。谢谢你,伙计。。。
SELECT u.ID
,u.LastName
,u.FirstName
,result.SCORE
,result.GOAL
FROM Users u
LEFT JOIN (
SELECT q.USER_ID ,SUM(q.SCORE) AS 'score' , SUM(q.GOAL) AS 'goal'
FROM (
SELECT t1.USER_ID,t1.SCORE,t1.GOAL
FROM table1 t1
UNION
SELECT t2.USER_ID ,t2.SCORE,t2.GOAL
FROM table2 t2
UNION
SELECT t3.USER_ID,t3.SCORE,t3.GOAL
FROM table3 t3
) q
GROUP BY q.USER_ID
) result
ON result.USER_ID = u.ID