2

たとえば、Person各エントリの ID を持つテーブルがあり、イベントでの各人PersonEventの を記録するテーブルがあります。personID

イベントの行が含まれていない場合PersonEvent、テーブル内の全員がPerson出席しました。ただし、テーブルにエントリがある場合は、PersonEventその人だけがイベントに参加しました。

次のようなクエリを実行したい:

SELECT * 
FROM Person p 
WHERE ((SELECT COUNT(*)
        FROM PersonEvent pe 
        WHERE pe.personID = p.ID 
        AND pe.eventID = '290') = 0 
      OR EXISTS 
        (SELECT * 
         FROM PersonEvent pe 
         WHERE pe.personID = p.ID 
         AND pe.eventID = '290'))

どうすればいいですか?

4

1 に答える 1

9
SELECT *
  FROM Person p
 WHERE NOT EXISTS ( -- not a single person for the event
       SELECT *
         FROM PersonEvent
        WHERE eventID = '290')
    OR EXISTS ( -- the person for the event
       SELECT *
         FROM PersonEvent pe
        WHERE pe.personID = p.ID AND pe.eventID = '290')
于 2012-10-11T23:11:57.540 に答える