두 테이블이 있습니다 : invitees
및 invitee_information
입니다. 초대받은 사람은 events
에 속합니다 (세 번째 테이블 event_id는 invitees
테이블의 외래 키입니다).왼쪽 조인에 group by를 사용하면 IN은 빈 결과를 산출합니다.
아직 사용할 수있는 정보가없는 이벤트 당 초대 수를 얻고 싶습니다 (invitee_information
테이블에 레코드 없음).
I WHERE 절 안티 가입 주어진 EVENT_ID 예상대로 카운트가 반환된다 (invitee_id
열이 어떠한 정보도 저장되지 갖는 행을 필터링하는 NULL IS) 패턴에 하나만 event_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;
이제는 각 event_id에 대한 루프에서이를 얻지 않고이 이벤트 데이터를 여러 개의 event_ids에 대해 DB 수준에서 얻으려면 IN을 사용하고 여러 개의 event_ids를 전달하고 GROUP_BY event_id
을 사용했습니다.
예상 결과해야 할 (EVENT_ID의 18569에 대한 invitee_information
테이블에 저장된 데이터가없는 경우 :.
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_id가 foreign 키인'invitee_information' 테이블에 레코드가 없음을 의미합니다. –
@AliMalik. . . 두 피초 사인 모두가 '피초청자'에 있지 않은 문제인가? 그것은 내가 당신의 질문을 이해하는 방법이 아니지만, 당신이 묻고 자하는 것일 수 있습니다. –