2014-04-19 72 views
0

我試圖寫在MySQL查詢執行以下操作:問題與MySQL查詢構造

「如果有該部門沒有學生未分配的顧問,找到最advisees的 現有教師和重新分配他們的建議之一是給新的 指導員。「

表的定義是:

Advisor(i_id, s_id) - i_id, s_id is the primary key. 
Instructor(i_id, name, dept_name, salary) - i-id is the primary key. 
Student(s_id, name, dept_name, tot_cred) - s_id is the primary key. 

我寫了下面的查詢,這是不完整的,但我不能確定如何進行:

SELECT MAX(counted) 
(SELECT i_id, COUNT(s_id) AS counted 
FROM Advisor 
GROUP BY i_id) ; 

任何幫助將不勝感激!

+0

這些是唯一的表嗎?學生表在哪裏,當然s_id不是顧問主鍵(假設s_id =學生ID) – surfer190

+0

我已經提供了學生表信息的編輯.....並且是s_id =學生ID。 – pypep278

+0

您通常會對此使用ORDER BY LIMIT 1 - 除非您擔心關係 - 可能不會在此情況下 – Strawberry

回答

1

該部門沒有學生沒有分配顧問:

SELECT Student.s_id from Student 
WHERE s_id NOT IN ((SELECT DISTINCT(s_id) from Advisor) AS Assigned) 

找到最advisees現有教師

SELECT MAX(value), i_id 
FROM 
(SELECT i_id, COUNT(*) as value 
FROM Advisor 
GROUP BY i_id) AS counted) 

重新分配他們的advisees的一個新的教練

Done Manually 

還沒有測試過,這裏可能有一些語法錯誤