请问这个sql语句该如何写(oracle)?
teacher表(age和name都有可能会重复):agenameteacher6tom张三6Kitty张三8mary张三9tony李四10john李四7terry王五成...
teacher表(age和name都有可能会重复):
age name teacher
6 tom 张三
6 Kitty 张三
8 mary 张三
9 tony 李四
10 john 李四
7 terry 王五
成绩表:
age name grade
6 tom 89
6 kitty 89
8 mary 92
7 tony 88
要求,根据某老师下的学生age和name去查询成绩表,统计出这些记录的总成绩。
比如以张三为条件,查出两条记录的age和name,就在成绩表统计出对应age和name记录的总成绩。
请问sql语句怎么写?我的写法是:
select sum(t.grade) where t.age in(查询teacher t2表的age) and t.name in(查询teacher t2表的name) and t2.teacher='张三'
但这样查好像有问题,有时候好像结果不对。 展开
age name teacher
6 tom 张三
6 Kitty 张三
8 mary 张三
9 tony 李四
10 john 李四
7 terry 王五
成绩表:
age name grade
6 tom 89
6 kitty 89
8 mary 92
7 tony 88
要求,根据某老师下的学生age和name去查询成绩表,统计出这些记录的总成绩。
比如以张三为条件,查出两条记录的age和name,就在成绩表统计出对应age和name记录的总成绩。
请问sql语句怎么写?我的写法是:
select sum(t.grade) where t.age in(查询teacher t2表的age) and t.name in(查询teacher t2表的name) and t2.teacher='张三'
但这样查好像有问题,有时候好像结果不对。 展开
3个回答
展开全部
SELECT SUM(成绩表.grade)
FROM teacher表 LEFT JOIN 成绩表
ON teacher表.age =成绩表.age and teacher表.name = 成绩表.name
WHERE teacher表.teacher = '张三'
FROM teacher表 LEFT JOIN 成绩表
ON teacher表.age =成绩表.age and teacher表.name = 成绩表.name
WHERE teacher表.teacher = '张三'
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
age和name都有可能会重复,这样的话SQL怎么查都是错的!
问题的关键是这两个表的结构设计错了,应该增加一个主键字段,用来唯一确定学生。
问题的关键是这两个表的结构设计错了,应该增加一个主键字段,用来唯一确定学生。
追问
那假定age和name一起的话就是唯一的,那可以查么?
追答
可以查,age和name一起是唯一的话,那应该在这两个字段加上联合主键。
flyingFish211 和seasky0031666 回答的方法都是可以的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select sum(t.grade)
from t
where exists(select 1 from teacher where teacher ='张三' and age = t.age and name =name)
from t
where exists(select 1 from teacher where teacher ='张三' and age = t.age and name =name)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询