gpt4 book ai didi

SQL Server 2005 RIGHT OUTER JOIN 不起作用

转载 作者:行者123 更新时间:2023-12-04 10:31:49 24 4
gpt4 key购买 nike

我正在查找特定类(class)的访问日志。即使日志表中不存在所有类(class),我也需要显示它们。因此,外连接......但在尝试(大概)LEFT OUTER 的所有变体之后, RIGHT OUTER , INNER以及在 SQL 代码中放置表,我无法得到我的结果。

这是我正在运行的内容:

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 的条款?这是我加入表格的方式吗?

再次,简而言之,我想要所有 course_id,而不管它们是否存在于 lsn_logs 中。

最佳答案

Is it something in the WHERE clause that's preventing me from getting course_id's that don't exist in lsn_logs?



是的。

您在 WHERE 中使用相等条件有效过滤掉 NULL 的子句 OUTER JOIN 生成的行.

更新:
SELECT  c.instructor,
c.course_id,
l.course_logins,
a.logins system_logins,
l.last_course_login,
a.last_login last_system_login
FROM courses с
JOIN accounts a
ON a.first_name + ' ' + a.last_name = c.instructor
CROSS APPLY
(
SELECT COALESCE(COUNT(access_date), 0) course_logins,
MAX(access_date) last_course_login
FROM lsn_logs l
WHERE l.object_id = 'LOGIN'
AND l.course_id = c.course_id
AND l.user_id = a.username
) l
WHERE c.course_type = 'COURSE'
AND c.course_id NOT LIKE '%TEST%'
AND a.account_rights > 2
ORDER BY
a.last_name,
a.first_name,
c.course_id,
course_logins DESC

关于SQL Server 2005 RIGHT OUTER JOIN 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2874349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com