2012-09-19 52 views
-3

我有2個表,EVENTEVENT_INVITATION。我要選擇所有事件:MySQL加入查詢與計數

EVENT.creator_id = x 
OR 
EVENT_INVITATION.invitee_id = x 

但我也需要返回的EVENT_INVITATION行總數的每個結果EVENT

回答

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 
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 fiddle原因沒有你的數據結構和樣本集我沒有測試它的方式。