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

wfveoks0  于 2021-06-19  发布在  Mysql
关注(0)|答案(3)|浏览(371)


在上述关系模式中,我将如何执行以下操作:
列出所有gpa高于所申请专业最低要求gpa的学生名单。

gopyfrb3

gopyfrb31#

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

kg7wmglp2#

两个连接应该可以做到:

  1. SELECT s.*
  2. FROM Student s
  3. JOIN Apply a ON s.sId = a.sId
  4. JOIN MinimumGPA m on m.major = a.major
  5. WHERE s.gpa > m.mingpa
myss37ts

myss37ts3#

您使用join和natural join(这一个不是必需的,但我喜欢它),join you ufse 2 tables给出了两个需要相等的列(您在where中指定了它们),natural join做同样的事情,但是假设您有一个或多个同名的列(这些是natural join使用的列,就像它们在where中被delared一样)
所以首先你融合minimumgpa并应用(他们有两个同名的col以便自然连接)

  1. Select * FROM MinimumGPA NATURAL JOIN Apply

然后,既然你在这里要求学生的名字,你就把这个新表(给它一个名字,在这个例子中我用了minimumgpaapply,如果你想的话,你可以把它命名为“dogtable”)和学生融合在一起,因为列上的名字和你用join和where指定的列不一样,你还添加了gpa条件

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

所以最后你用这样的方式结束:

  1. Select sName from Student JOIN (Select * FROM MinimumGPA NATURAL JOIN Apply) As MinimumGPAApply WHERE Student.sId = MinimumGPAApply.sID AND Student.GPA > MinimumGPAApply.minGPA

相关问题