Mysql 需要帮助打印18岁以下有一个或多个专业的部门名称吗

Mysql 需要帮助打印18岁以下有一个或多个专业的部门名称吗,mysql,mysql-workbench,Mysql,Mysql Workbench,寻求以下问题的指导: 打印有一个或多个18岁以下专业的部门名称 My table looks like this: Student(sid,sname,sex,age,year,qpa) Dept(dname,numphds) Prof (pname,dname) Course (cno,cname,dname) Major(dname,sid) Section(dname,cno,sectno,pname) Enroll(sid,grade,dname,cno,sectno) 我最终通过以下

寻求以下问题的指导: 打印有一个或多个18岁以下专业的部门名称

My table looks like this:
Student(sid,sname,sex,age,year,qpa)
Dept(dname,numphds)
Prof (pname,dname)
Course (cno,cname,dname)
Major(dname,sid)
Section(dname,cno,sectno,pname)
Enroll(sid,grade,dname,cno,sectno)
我最终通过以下方法得到了结果:

SELECT dept.dname
FROM dept
INNER JOIN major on major.dname = dept.dname
INNER JOIN student on major.sid = student.sid and student.age<18
group by dept.dname
having count(*)>0
limit 5;

我不确定我是否理解,但这里有一个尝试,没有看到任何真实数据:

考虑以下几点:

SELECT dept.dname
FROM dept
INNER JOIN major on major.dname = dept.dname
INNER JOIN student on major.sid = student.sid and student.age<18
group by dept.dname
having count(*)>0
limit 5;
内部联接要求一个关系在双方都存在一个匹配项,这满足了专业的要求。 按年龄筛选以限制年龄等于18岁以上的人。 将其分解为我们关心的不同部门,例如年龄为17岁的A部门,年龄为16岁的A部门-我们只需要一个A部门。 选择DISTINCT d.dname-打印部门名称 来自d部门-  内部连接专业m-具有一个或多个专业   内接学生-   在s.sid=m.sid上-  关于m.dname=d.dname- 其中s.年龄<18岁-谁在18岁以下

您忘记了与DEPT表相关的FROM子句以及与由SID链接的STUDENT表的第二个联接。此外,您需要限制18岁以下的学生加入。最后,您需要至少有一个符合年龄标准的学生的dname

SELECT DISTINCT dept.dname
FROM dept
inner join major on major.dname = dept.dname
inner join student on major.sid = student.sid and student.age < 18
group by dept.dname
having count(*)>0;

我写了下面的代码,但我想我遗漏了一些东西。你为什么这么想?你得到了什么结果,出了什么问题?虽然现在我已经说过了,但是您的having子句几乎肯定是错误的。我将having子句更改为where子句,但是看起来错误在join子句和groupby子句中。我是否必须将major.dname与dept.dname绑定才能打印具有一个或多个专业的部门名称?您通过了。现在收下你的毕业证书,非常感谢!在你的帮助下我得到了结果。