【发布时间】:2016-01-01 13:51:33
【问题描述】:
department(dept_name, building, budget)
course(course_id, title, dept_name, credits)
instructor(ID, name, dept_name, salary)
section(course_id, sec_id, semester, year, building, room_number, time_slot_id)
teaches(ID, course_id, sec_id, semester, year)
student(ID, name, dept_name, tot_cred)
takes(ID, course_id, sec_id, semester, year, grade)
-
查找超过 50 名学生参加的每门课程的课程名称、学期和年份
select course.title , takes.semester , takes.year from course natural join takes where course.course_id = takes.course_id having count(distinct ID) > 50 -
查找包含多个部分的每门课程的标题
select title from course natural join section where course.course_id = section.course_id having count(distinct sec_id) > 1 -
查找在 Comp 中教授超过 5 门课程的所有讲师的 ID。科学。部门
select ID from instructor natural join course where course.dept_name = instructor. dept_name having count(credits)>5
这也应该是学分或 course_id
- 查找所有未教授生物系提供的任何模块的教师
这个我什至不知道从哪里开始
【问题讨论】:
-
不要使用自然连接(它依赖于隐式字段名称)。也不能有没有 group by 的有子句..
-
MySQL 还是 SQL-Server?它们不一样,甚至不相关。
-
@amdixon 我认为 MySQL 允许 HAVING 没有 GROUP BY。但他需要 GROUP BY 来处理这些查询,因为他想在组内计数。
-
正确,在这种情况下他需要一个 group by 但 mysql 在语法上允许它
标签: mysql sql sql-server database natural-join