特定のコースのアクセスログを調べています。ログ テーブルに存在しない場合でも、すべてのコースを表示する必要があります。したがって、外部結合....しかし、(おそらく) SQL コード内のLEFT OUTER
、RIGHT OUTER
、およびテーブルの配置のすべてのバリエーションを試した後、結果を得ることができませんでした。INNER
これが私が実行しているものです:
SELECT (a.first_name+' '+a.last_name) instructor,
c.course_id,
COUNT(l.access_date) course_logins,
a.logins system_logins,
MAX(l.access_date) last_course_login,
a.last_login last_system_login
FROM lsn_logs l RIGHT OUTER JOIN courses c ON l.course_id = c.course_id,
accounts a
WHERE l.object_id = 'LOGIN'
AND c.course_type = 'COURSE'
AND c.course_id NOT LIKE '%TEST%'
AND a.account_rights > 2
AND l.user_id = a.username
AND ((a.first_name+' '+a.last_name) = c.instructor)
GROUP BY c.course_id,
a.first_name,
a.last_name,
a.last_login,
a.logins,
c.instructor
ORDER BY a.last_name,
a.first_name,
c.course_id,
course_logins DESC
WHERE
lsn_logs に存在しない course_id を取得することを妨げているのは、句の中にありますか? それは私がテーブルに参加している方法ですか?
繰り返しますが、要するに、lsn_logs に存在するかどうかに関係なく、すべての course_id が必要です。