你可以寫:
SELECT t1.organizer_id
FROM (SELECT eo.organizer_id,
COUNT(1) AS num_events
FROM event_organizer eo
JOIN event e
ON eo.event_id = e.event_id
WHERE e.year BETWEEN 2010 AND 2012
GROUP
BY eo.organizer_id
) t1
JOIN (SELECT COUNT(1) AS num_events
FROM event e
WHERE e.year BETWEEN 2010 AND 2012
) t2
ON t1.num_events = t2.num_events
;
(對於上述的想法是:每個管理器,發現他2010年和2012年之間有多少事件(S)主辦然後,比較這對總數2010年和2012年之間的事件。如果這兩個數字相同,則主辦機構在該時間段內的所有事件)
或者,你可以寫:
SELECT organizer_id
FROM organizer -- I assume you have an 'organizer' table?
WHERE organizer_id NOT IN
(SELECT o.organizer_id
FROM event e
CROSS
JOIN organizer o
LEFT
OUTER
JOIN event_organizer eo
ON e.event_id = eo.event_id
AND o.organizer_id = eo.organizer_id
WHERE e.year BETWEEN 2010 and 2012
AND eo.event_id IS NULL
)
;
(IDE中a爲這一個是:找到所有事件–組織者配對,使組織者配對而不是組織者事件。然後,返回誰不會出現在任何這樣的配對所有組織者)
嘗試'event'反引號內 –