我有以下表格:
有字段的studentprofile RollNumber
, Major
我有领域的学生注册 RollNumber
, CourseCode
, Section
, Semester
我有领域的部门费用 DepartmentName
, Semester
, Fees
我要做的是找出一个学生在某个学期必须支付的费用。问题是studentenrollment表有多个重复值,这使得很难找到确切的费用。
我的学生登记表是这样的:
RollNO |CourseCode |Section |Semester
-----------+---------------+------------+------------
ST-0001 |BIOL 300 |A |Fall 2018
ST-0001 |BIOL 500 |A |Spring 2018
ST-0001 |BIOL 450 |B |Spring 2018
ST-0001 |BIOL 475 |A |Spring 2018
ST-0002 |CHEM 500 |A |Spring 2018
ST-0002 |CHEM 450 |B |Spring 2019
现在有了卷数和学期的重复值,我怎样才能得到正确的答案。如果我使用 GROUP BY (StudentEnrollment.RollNo)
,卷号不重复,我无法得到学生参加的所有学期,如果我使用 GROUP BY (StudentEnrollment.RollNo)
我没有把所有学生的卷号都记在学期表上。
起初我试着用
Select
a.RollNo,
b.Semester,
c.Fees
FROM StudentProfile a
LEFT JOIN StudentEnrollment b ON b.RollNo = c.RollNo
LEFT JOIN DepartmentFees C ON c.DepartmentName = a.Major //AND maybe join semester?
但似乎不起作用。下一步我能试试什么?
2条答案
按热度按时间kb5ga3dv1#
只需将列添加到GROUPBY子句:
e37o9pze2#
既然您在select语句中提到了b.EXTERM、c.fees,所以要执行group by rollno和EXTERM,请在group by子句中添加a.rollno和b.EXTERM,我使用了“join”而不是“left join”,因为当您只想返回两边都有对的记录时,请使用join/inner join,当需要“left”表中的所有记录时,不管它们在“right”表中是否有对,都将使用left join。