以下是我的情况:
我有4个表,在所有这些表中都包含一个名为score
的列,我的目标是为4个表的结果创建操作的视图获得以下值:
现在我知道我可以创建视图:
(SELECT * FROM table1 where condition) + (SELECT * FROM table2 where condition)
等等。
但是对于我必须嵌套的三个目标中的每个目标,至少选择所有表格2次。
所以我的问题是你如何处理这样的案件?在sql中是否有任何操作使这个任务变得容易,或者我必须做多余的事情?
更新
所以我的完整案例是我系统中的每个用法都有一个叫做division_id的东西,现在我想用这个ID来找出每个部门的分数:
(请不要_COPY)
答案 0 :(得分:1)
您可以使用UNION加入4个表,因为没有连接条件。使用除法字段可以通过几种方法完成此操作。可能最简洁的是:
select division_id, count(*), avg(scores.score), sum(scores.score) from
user join
(select id as user_id, score from user
UNION ALL
select user_id, score from test_score
UNION ALL
select user_id, score from task_score
UNION ALL
select user_id, score from offline_score) as scores
on user.id = scores.user_id
group by division_id