请问这个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='张三'
但这样查好像有问题,有时候好像结果不对。
展开
 我来答
flyingFish211
2012-06-18 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
SELECT SUM(成绩表.grade)
FROM teacher表 LEFT JOIN 成绩表
ON teacher表.age =成绩表.age and teacher表.name = 成绩表.name
WHERE teacher表.teacher = '张三'
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shushuaimimi
2012-06-20
知道答主
回答量:10
采纳率:25%
帮助的人:9.8万
展开全部
age和name都有可能会重复,这样的话SQL怎么查都是错的!
问题的关键是这两个表的结构设计错了,应该增加一个主键字段,用来唯一确定学生。
追问
那假定age和name一起的话就是唯一的,那可以查么?
追答
可以查,age和name一起是唯一的话,那应该在这两个字段加上联合主键。
flyingFish211 和seasky0031666 回答的方法都是可以的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
seasky0031666
2012-06-19 · 超过14用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:31.6万
展开全部
select sum(t.grade)
from t
where exists(select 1 from teacher where teacher ='张三' and age = t.age and name =name)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式