-3

私は2つのテーブルを持っていEVENTますEVENT_INVITATION. 次のすべてのイベントを選択したい:

EVENT.creator_id = x
OR
EVENT_INVITATION.invitee_id = x

EVENT_INVITATIONしかし、それぞれの結果の合計行数も返す必要がありEVENTます。

4

2 に答える 2

1

これでうまくいくと思います:

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フィドルの原因を実行することをお勧めします。それをテストする方法はありません。

于 2012-09-19T22:33:04.970 に答える
0

関心のあるすべてのイベントのリストを取得し、関連する招待状を数えます。招待がない場合の外部結合。

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
于 2012-09-19T22:32:30.320 に答える