2010-09-26 116 views
0

我有兩個表 - 學生和訪談 - 與價值觀:確定記錄的出現次數

student 
---------- 
sID 
sName 

interview 
---------- 
sID 
date 
outcome = (OFFER, NOOFFER, HIRED) 

而且我必須列出誰從未收到要約的任何學生的SID,但誰擁有了超過五次採訪。

我無法確定如何確定學生是否有超過5次採訪。我知道你可以對記錄進行計數,以查看sID是否超過5次,但我不確定如何格式化它。任何幫助將不勝感激!

+1

什麼口味的SQL這是什麼? – NullUserException 2010-09-26 01:41:02

+0

我正在使用mySQL – user457666 2010-09-26 01:44:36

回答

4

用途:

SELECT s.sid 
    FROM STUDENT s 
WHERE EXISTS(SELECT NULL -- more than five interviews 
       FROM INTERVIEW i 
       WHERE i.sid = s.sid 
      GROUP BY i.sid 
       HAVING COUNT(*) > 5) 
    AND NOT EXISTS(SELECT NULL -- never received an offer 
        FROM INTERVIEW i 
        WHERE i.sid = s.sid 
        AND i.outcome = 'OFFER') 
+0

好吧,這是有道理的,但我不知道我明白'選擇空'語句 - 這到底是什麼?這工作雖然,非常感謝! – user457666 2010-09-26 02:06:18

+1

@ user457666:在EXISTS子句中,不使用SELECT子句。你可以使用'EXISTS(SELECT 1/0 ...'替換'EXISTS(SELECT NULL ...),它應該返回一個用零除的數學錯誤 - 它不會。'EXISTS'只對'FROM'子句之後的任何內容。 – 2010-09-26 02:18:23

+0

明白了 - 謝謝! – user457666 2010-09-26 13:19:40

0
select s.sID,s.sName from 
(select sID,count(0) as numInterviews 
    from interview 
    where sID not in (select sID from interview where outcome='OFFER') 
    group by sID 
) as interviewCounts 
join student s on s.sID=interviewCounts.sID 
where interviewCount>5