2015-11-07 66 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