私は2つのテーブルを持っていEVENT
ますEVENT_INVITATION
. 次のすべてのイベントを選択したい:
EVENT.creator_id = x
OR
EVENT_INVITATION.invitee_id = x
EVENT_INVITATION
しかし、それぞれの結果の合計行数も返す必要がありEVENT
ます。
これでうまくいくと思います:
SELECT count(*), EVENT.event_id
FROM EVENT,
EVENT_INVITATION,
(
SELECT event_ID
FROM EVENT
WHERE creator_id = x
UNION
SELECT event_id
FROM EVENT_INVITATION.
WHERE invitee_id = x) temp
WHERE EVENT.event_ID = EVENT_INVITATION.event_ID
AND EVENT.event_ID = temp.event_ID
GROUP BY EVENT.event_id
データ構造とサンプルセットなしでSQLフィドルの原因を実行することをお勧めします。それをテストする方法はありません。
関心のあるすべてのイベントのリストを取得し、関連する招待状を数えます。招待がない場合の外部結合。
WITH selectEvents AS (
SELECT event_id
FROM event
WHERE creator_id = <x>
UNION
SELECT event_id
FROM event_invitation
WHERE invitee_id = <x>
)
SELECT s.event_id, COUNT(i.event_id) AS theCount
FROM selectEvents s
LEFT OUTER JOIN event_invitation i ON (i.event_id = s.event_id)
GROUP BY s.event_id