Sql 查找最年轻的学生的姓名和年龄,这些学生要么是英语专业的学生,要么是注册参加Ivana Teach教授的课程的学生

Sql 查找最年轻的学生的姓名和年龄,这些学生要么是英语专业的学生,要么是注册参加Ivana Teach教授的课程的学生,sql,Sql,模式如下: Student(snum: integer primary key, sname: varchar(40), major: varchar(40), level: varchar(40), age: integer) Faculty (fid: integer primary key, fname: varchar(40), deptid: integer) Class(name: varchar(40) primary key, meets at: varchar(40), r

模式如下:

Student(snum: integer primary key, sname: varchar(40), major: varchar(40), level: varchar(40), age: integer)

Faculty (fid: integer primary key, fname: varchar(40), deptid: integer)

Class(name: varchar(40) primary key, meets at: varchar(40), room: varchar(40), fid: integer references faculty)

Enrolled(snum: integer references student, cname: varchar(40) references Class(name))
inner join enrolled on enrolled.snum = student.snum  
inner join class on  enrolled.cname = class.name  
inner join faculty on faculty.fid = class.fid 
where (student.major = 'English' or faculty.fname='Ivana Teach')
我写的问题是:

 select min(student.age),student.sname
 from student
 inner join enrolled 
 on enrolled.snum = student.snum or student.major = 'English' 
 inner join class 
 on  enrolled.cname = class.name  
 inner join faculty 
 on faculty.fid = class.fid and faculty.fname='Ivana Teach' 
 group by student.age 
 having student.age=min(student.age);
这将给出一个输出:

最小(学生年龄) 斯奈姆 21 玛利亚·怀特 19 约瑟夫·汤普森 20 克里斯托弗·加西亚 17 丽莎·沃克 18 保罗·霍尔
按学生分组。年龄
将按年龄分组,即它将导致显示每个年龄组学生最低年龄的结果,这不是您想要的,因此应删除此部分

拥有student.age=min(student.age)
也是多余的。HAVING子句用于根据某些聚合条件进行筛选。例如,如果你想找到所有科目分数总和大于100的学生(完全合成),你可以按student.sname进行分组,使总和(student.scores)>100。同样,这不是您在特定查询中想要的,因此应该删除这一部分

关于你的内心连接:

inner join enrolled on enrolled.snum = student.snum or student.major = 'English' 
inner join class on  enrolled.cname = class.name  
inner join faculty on faculty.fid = class.fid and faculty.fname='Ivana Teach'
要找到主修英语或就读于Ivana Teach教授课程的学生,您应使用WHERE子句,如下所示:

Student(snum: integer primary key, sname: varchar(40), major: varchar(40), level: varchar(40), age: integer)

Faculty (fid: integer primary key, fname: varchar(40), deptid: integer)

Class(name: varchar(40) primary key, meets at: varchar(40), room: varchar(40), fid: integer references faculty)

Enrolled(snum: integer references student, cname: varchar(40) references Class(name))
inner join enrolled on enrolled.snum = student.snum  
inner join class on  enrolled.cname = class.name  
inner join faculty on faculty.fid = class.fid 
where (student.major = 'English' or faculty.fname='Ivana Teach')

我删除了不一致的数据库标记。请仅使用您真正使用的数据库进行标记。不要重新添加这两个标记,Prakar,它们都是由于某种原因被删除的。只标记您真正使用的RDBMS。为什么我会得到这样一个答案,而正确的答案只有一个条目-好吧,要么您的查询中有一个错误,要么RDBMS中有一个错误..请共享一些示例数据并提及您使用的数据库名称。