繁体   English   中英

创建基于多个列值计算总值的视图表

[英]create view table that calculate total values base on multiple column values

这些是我的示例表,课程表包括

course_id     |      course name
1             |       java
2             |       .net
3             |       php
4             |       ruby and rails

Indian_student表包括

course_id     | no.of student
2             |       10
3             |       30

Japan_student表包括

course_id     | no.of student
1             |       50
2             |       30

中文学生表包括

course_id     | no.of student
2             |       60
4             |       20

我希望输出为

Course_id |  in_stu   |  ja_stu  |  ch_stu   | total
1         |   0      |     50    |    0       |   50
2         |   10     |     30    |    60      |    100
3         |   30     |     0     |    0       | 30
4         |    0     |     0     |    20      |20

但是我只得到结果

Course_id   |   in_stu     |    ja_stu     |    ch_stu     | total
2           |    10        |     30       |    60         |  100

我的看法是

create view total_student  as select
i.indian_stu as in_stu,
j.japan_stu as ja_stu,
c.chinese_stu as ch_stu,
main.course_id as course_id,
 (i.indian_stu + j.japan_stu +  c.chinese_stu) as total
from indian_student i, japan_student j,chinese_student c, course c
where i.course_id=main.course_id and j.course_id=main.course_id and c.course_id=main.course_id  group by course_id;

我可以得到任何建议吗

您使用的是1990年代老式的将表连接在一起的方法:用逗号分隔的表列表。 这不足以完成您的任务。 您需要使用LEFT JOIN因为逗号语法是INNER JOIN语法。 INNER JOIN忽略不匹配的行。

(此外,您的示例查询使用c别名两次;这将不起作用。它也使用GROUP BY但我相信您需要ORDER BY

你要这个:

select i.indian_stu as in_stu,
       j.japan_stu as ja_stu,
       x.chinese_stu as ch_stu,
       main.course_id as course_id,
       (i.indian_stu + j.japan_stu +  c.chinese_stu) as total
  from course c
  left join indian_student i ON c.course_id = i.course_id
  left join japan_student j ON c.course_id = j.course_id
  left join chinese_student x on c.course_id = x.course_id
 order by c.course_id

开发视图时,首先使SELECT语句起作用,然后使用它创建视图。 这比连续删除并重新创建视图要容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM