SQL-根据其他表中的数据从表中选择项目?

时间:2018-10-19 21:00:53

标签: mysql sql select

Relational Schema Image

在上面的关系模式中,我将如何执行以下操作?:

列出所有GPA高于申请的专业所要求的最低GPA的学生的姓名。

3 个答案:

答案 0 :(得分:2)

几个联接应该可以解决问题:

SELECT s.*
FROM   Student s
JOIN   Apply a ON s.sId = a.sId
JOIN   MinimumGPA m on m.major = a.major
WHERE  s.gpa > m.mingpa

答案 1 :(得分:0)

select s.Cname,s.gpa as studentGpa ,mg.mingpa as mingpaRequired from student s
inner join apply a on   s.sid=a.sid
inner join major m on m.major=a.major
inner join minimumGPA mg on mg.major=m.major
where  mg.mingpa<s.gpa

答案 2 :(得分:0)

您使用JOIN和NATURAL JOIN(这不是必需的,但我喜欢), 通过联接您ufse 2表给出需要相等的2列(您在WHERE中指定它们),NATURAL JOIN的功能相同,但假设您有1个或多个具有相同名称的列(这些是自然联接使用的,例如if他们被放到哪里了

因此,首先将MinimumGPA和Apply融合在一起(它们有2个相同名称的列,因此很自然地加入)

Build Phases

然后,由于您到处询问学生的姓名,您将新表(给它起了名字,在这种情况下,我使用MinimumGPAApply,如果需要,可以将其命名为“ dogtable”),因为列上的名称与您使用JOIN相同,并在where中指定列,还添加了gpa条件

Select * FROM MinimumGPA NATURAL JOIN Apply

所以最后,您会得到这样的东西:

Select sName from Student JOIN (The first query) As MinimumGPAApply WHERE Student.sId = MinimumGPAApply.sID AND Student.GPA > MinimumGPAApply.minGPA