我有兩個表:invitees
和invitee_information
。被邀請者屬於events
(第三個表event_id是invitees
表中的外鍵)。使用group by with left join和IN得到空結果
我想獲得每個事件中沒有可用信息的被邀請者總數(invitee_information
表中沒有記錄)。
當我寫只使用一個event_id
在where子句和反連接模式(IS NULL爲invitee_id
列,從而提供具有保存的任何信息行篩選)如預期,鑑於事項標識返回計數查詢:
SELECT COUNT(i.id)
FROM invitees i
LEFT JOIN invitee_information ii
ON ii.invitee_id = i.id
WHERE ii.invitee_id IS NULL AND i.`event_id` = 18571 AND i.`invitation_sent` = 1;
現在爲了優化查詢以獲得在DB級這個數據算多event_ids,而不是在每個事項標識循環得到這個,我用,並通過多種event_ids和使用GROUP_BY event_id
。
預期結果應該是(如果沒有保存在invitee_information
表事項標識18569數據:
event_id | count(i.id)
18569 | 0
但查詢結果總是空的我的更新查詢:
SELECT i.`event_id`, COUNT(i.id)
FROM invitees i
LEFT JOIN invitee_information ii
ON i.id = ii.invitee_id
WHERE ii.invitee_id IS NULL AND i.`event_id` IN(18569,18571) AND i.`invitation_sent` = 1
GROUP BY i.`event_id`;
謝謝你的迴應。不,這兩個查詢都產生了一個空的結果。此外,這可能是我的第一個查詢只有一個event_id將始終返回0作爲計數? –
我在計算invitees.id,因爲我想計算所有沒有提供信息的被邀請者。沒有提供的信息表示在invitee_information表中沒有包含invitee_id作爲外鍵的記錄。 –
@AliMalik。 。 。兩個被邀請者都不在'被邀請者'的問題嗎?這不是我如何理解你的問題,但這可能是你想要問的。 –