2

ミーティングなしでユーザーを除外しないようにするにはどうすればよいですか? 同様の質問があることは承知していますが、このコードはかなり複雑です。

SELECT user.userID, user.contactName, user.email, COUNT( * ) AS meetingsCount
FROM user
LEFT OUTER JOIN meeting ON user.userID = meeting.userID
WHERE user.userID NOT 
IN ( 1, 2, 3, 4, 5, 59, 62, 63, 64, 66, 69, 71, 72, 73, 78, 107 ) 
AND SUBSTRING( meeting.meetingCode, 5, 2 ) 
BETWEEN 12 
AND 22 
AND SUBSTRING( meeting.meetingCode, 7, 2 ) 
BETWEEN 01 
AND 12 
AND SUBSTRING( meeting.meetingCode, 9, 2 ) 
BETWEEN 01 
AND 31 
GROUP BY user.userID, contactName, email
ORDER BY meetingsCount DESC
4

1 に答える 1

5

会議コード テーブルのロジックを結合に入れる必要があります。そうしないと、会議テーブルから除外しているレコードに一致するユーザーが結果から除外されます。JOIN を本質的に INNER 結合にします。BETWEEN 句の値も一重引用符で囲む必要があると思います。

SELECT  user.userID, user.contactName, user.email, COUNT( meeting.userID ) AS meetingsCount

FROM    user

        LEFT OUTER JOIN meeting ON user.userID = meeting.userID
        AND SUBSTRING( meeting.meetingCode, 5, 2 ) BETWEEN '12' AND '22'
        AND SUBSTRING( meeting.meetingCode, 7, 2 ) BETWEEN '01' AND '12'
        AND SUBSTRING( meeting.meetingCode, 9, 2 ) BETWEEN '01' AND '31' 

WHERE user.userID NOT IN ( 1, 2, 3, 4, 5, 59, 62, 63, 64, 66, 69, 71, 72, 73, 78, 107 ) 

GROUP BY user.userID, contactName, email

ORDER BY meetingsCount DESC
于 2013-02-19T16:33:55.507 に答える