Estoy buscando registros de acceso para cursos específicos. Necesito mostrar todos los cursos, incluso si no existen en la tabla de registros. De ahí la unión externa ... pero después de intentar (presumiblemente) todas las variaciones de LEFT OUTER
, RIGHT OUTER
, INNER
y la colocación de las tablas dentro del código SQL, no pude obtener mi resultado.SQL Server 2005 RIGHT OUTER JOIN no funciona
Esto es lo que estoy corriendo:
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
¿Es algo en el WHERE
cláusula que me está impidiendo llegar course_id de que no existen en lsn_logs? ¿Es la forma en que me estoy uniendo a las mesas?
De nuevo, en resumen, quiero todos los ID de curso independientemente de su existencia en lsn_logs.
en caso de que tal vez se busca en hacer una izquierda unirse a cursos de lsn_logs? – Shaded
Estás uniendo cuentas con 'lsn_logs'. ¿Qué cuenta debería devolverse si no hay log_entry para un curso determinado? – Quassnoi
@quassnoi - el instructor del curso – CheeseConQueso