[英]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.