我是SQL新手。我必须进入表并尝试从表1中获取列数,然后通过表2中的其他列进行连接。
表1:
credits | sec_code | student_acc_id
--------------------------------
4 TUB 2098
5 JIY 2099
6 THG 3011
表2:
id| sec_code | student_acc_id | stu_id
-------------------------------------
1 TUB 2098 1011
5 JIY 2099 1011
7 THG 3011 1012
我想通过从sec_code中从table2中获取stu_id来获得学生的学分总和,并为stuId获取所有student_acc_id,并对从表2中找到的所有学生账户ID的总和中table1中的学分列。不知道如何加入或简化此查询。
通常我的方法是将这两个到三个不同的SQL语句包括在内,但如果可能的话,我会在一个sql查询中寻找它。
对于上述示例,我想从第二个表中获取所有student_id为1011的student_acc_id的学分总和。我只有第一张桌子。因此输出应为4 + 5,因为两个帐户都属于同一学生。
所以我需要: ->从表2中获取基于sec_code的stu_id(对于TUB sec_code可以说) ->从表中获取所有student_acc_id,其中stu_id是上述语句的结果 ->现在使用所有student_acc_id的总和计入表1中的学分
感谢您的帮助!
答案 0 :(得分:0)
尝试如下
select t2.stu_id,
sum(t1.credits)
from t1 join t2 on t1.student_acc_id=t2.student_acc_id and
t1.sec_code=t2.sec_code
group by stu_id
Having count(stu_id)>1
答案 1 :(得分:0)
根据您的数据使用联接存在。 但是根据示例数据,最好从Right表中获取数据。
select
tab2.stud_id,
SUM(tab1.credits) AS credit_sum
from
table1 as tab1
right join
table2 as tab2
on tab1.student_acc_id = tab2.student_acc_id
and tab1.sec_cd = tab2.sec_cd
where
tab2.stud_id in(
select distinct stud_id
from table2
where student_acc_id = '2098'
)
group by
tab2.stud_id;
您可以在此处检查其示例输出。请click获取小提琴解决方案。