2015-11-07 36 views
-3

奇数值请看下表:SQL:基于连取行,从多个表

course (course_id, title, dept_name, credits) 
section (course_id, sec_id, semester, year, building, room_no, time_slot id) 
instructor (id, name, dept_name, salary) 
takes (id, course_id, sec_id, semester, year, grade) 

需要查询为:

  1. 查找其在偶数和奇数学期开设的课程
  2. 查找谁教过至少一门课程中甚至学期导师的名字2012

这是来自过去的大学考试试卷。

+0

显示那些_very冗长的非最佳queries_。 – hjpotter92

+0

尝试找到一个'魔术笔'来完成你的家庭作业 – Wanderer

+0

@ hjpotter92删除了最后一部分,听起来不那么... 看到TJDJD的解决方案后,我忘了我的。它涉及不同的两个子查询,union和%。 – KoE

回答

0

我觉得#2是不可能的,因为instructor.id没有出现在任何其他表中。

#1,你可以尝试

SELECT * 
FROM `course` `c` 
INNER JOIN `section` `even` ON `c`.`course_id` = `even`.`course_id` 
INNER JOIN `section` `odd` ON `c`.`course_id` = `odd`.`course_id` 
WHERE `even`.`semester` % 2 = 0 
    AND `odd`.`semester` % 2 = 1; 
+0

感谢您的回答。不得不在那里添加一个独特的方式来清除dups。 – KoE