表一:chengji
stu_id kecheng chengji
001 语文 80
002 语文 91
003 数学 78
001 英语 80
004 语文 67
表二:banji
banji_id banji_name
1 一年级
2 二年级
表三:stu
stu_id banji_id
001 1
002 2
003 1
004 1
想要得到一个视图,显示如下,请问如何实现?
视图:chengji_cx
banji_name kecheng count_stu
一年级 语文 2
二年级 语文 1
一年级 数学 1
一年级 英语 1
说明:视图中的count_stu项为符合前两项条件的学生统计数.如第一条记录中表示一年级中有语文成绩的学生为2个.
stu_id kecheng chengji
001 语文 80
002 语文 91
003 数学 78
001 英语 80
004 语文 67
表二:banji
banji_id banji_name
1 一年级
2 二年级
表三:stu
stu_id banji_id
001 1
002 2
003 1
004 1
想要得到一个视图,显示如下,请问如何实现?
视图:chengji_cx
banji_name kecheng count_stu
一年级 语文 2
二年级 语文 1
一年级 数学 1
一年级 英语 1
说明:视图中的count_stu项为符合前两项条件的学生统计数.如第一条记录中表示一年级中有语文成绩的学生为2个.
CREATE VIEW chenji_cx
AS
SELECT A.banji_name, C.kecheng, count(*) as count_stu
FROM banji AS A
INNER JOIN stu AS B
ON A.stu_id = B.stu_id
INNER JOIN chengji AS C
ON C.banji_id = B.banji_id
GROUP BY A.banji_name, C.kechengGO没用数据检查, 抱歉.
SELECT b.banji_name, a.kecheng, COUNT(a.kecheng) AS count_stu FROM stu c INNER JOIN
banji b ON c.banji_id = b.banji_id INNER JOIN
chengji a ON c.stu_id = a.stu_id
GROUP BY b.banji_name, a.kecheng/*
stu_id kecheng chengji
------ ---------- -----------
001 语文 80
002 语文 91
003 数学 78
001 英语 80
004 语文 67
*/
as
select banji_name,kecheng,count(chengji)
from chengji,banji,stu
where banji.banji_id=stu.banji_id and chengji.stu_id=stu.stu_id
GROUP BY banji_name, kecheng
CREATE VIEW chenji_cx
AS
SELECT A.banji_name, C.kecheng, count(*) as count_stu
FROM banji AS A
INNER JOIN stu AS B
ON A.stu_id = B.stu_id
INNER JOIN chengji AS C
ON C.banji_id = B.banji_id
GROUP BY A.banji_name, C.kecheng
stu_id banji_id
------ --------
001 1
002 2
003 1
004 1
贴错了。郁闷。