私は3つの(私はそれらを継承しました)テーブル、ユーザーテーブル、コーステーブル、およびユーザーのアクティビティを測定する必要があるテストテーブルを持っています。たとえば、次のクエリは、セットの1つに含まれるユーザーの数を取得します-
SELECT COUNT(Users.ID), `CourseSessions`.`CourseID`
FROM `Users`
LEFT OUTER JOIN `CourseSessions`
ON `Users`.`ID` = `CourseSessions`.`UserID`
WHERE `Users`.`CredentialID` IN (2, 3)
AND `CourseSessions`.`CourseID` IN (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)
AND `CourseSessions`.`TimeIn` BETWEEN '2012-06-01' AND '2012-12-31'
GROUP BY `CourseSessions`.`CourseID`;
このような結果で-
COUNT, CourseID
32 1
43 2
31 3
49 4
36 5
21 6
5 7
2 15
別の数値セットのCourseSessionsをTestResultsに変更できます。問題は、誰かがコースを受講するか、テストを受講するときに発生します。
私ができる必要があるのは、ユーザーがいずれかまたは両方のテーブルに存在する場合、ユーザーを1回カウントすることです。次のように-
User Course.courseID Test.courseID
A 1
B 1 1
C 1
コースID1のカウントは3である必要があります。
私はこれを数時間見ていて、おそらくSUM ... IFを実行する必要があると思いましたが、それは期待どおりに機能しませんでした。副選択を試しましたが、列が多すぎます。全体として、私はこれの車軸にかなり巻き付いています。
2つのテーブルにユーザーのデータが存在する場合、どうすれば単一のカウントを取得できますか?