【发布时间】:2018-06-21 17:30:35
【问题描述】:
我有一个 SQL 查询,它只提取 2012 年至 2014 年的数据。但是,我知道自 2018 年以来还有更多数据,但它没有提取数据。我需要把它带到它拉所有日期的地方。这是我的代码。
select
PA.STUD_ID AS STUDENT_ID,
LS.SEQ_NUM AS SEQ_NUM,
LS.LOGIN_ID AS LOGIN_ID,
LS.LOGIN_TYPE AS LOGIN_TYPE,
LS.SESSION_ID AS SESSION_ID,
LS.LOGIN_TIME AS LOGIN_TIME,
LS.LOGOUT_TIME AS LOGOUT_TIME,
LS.LST_UPD_USR AS LAST_USER_UPDATED,
LS.LST_UPD_TSTMP AS LAST_TIME_STAMP,
LA.ATTEMPT_SUCCESSFUL AS SUCCESSFUL_ATTEMPT
FROM
PA_STUDENT PA,
PA_STUD_LOGIN_ATTEMPT LA,
PA_LOGIN_SESSION_INFO LS
WHERE
PA.STUD_ID = LA.STUD_ID
AND LA.SEQ_NUM = LS.SEQ_NUM
/** AND LOGIN_TIME >= [AuditDateRangeFrom]
AND NOT LOGIN_TIME > [AuditDateRangeTo] */
/** AND [security:PA_STUDENT PA]
*/
【问题讨论】:
-
您很可能需要改用
outer joins。数据是否仅存在于其中 1 个表中?一般来说,我建议不要在from子句中使用逗号,而是使用明确的joins。 -
您需要发布示例数据,以便我们重现您的问题。从逻辑上讲,您的查询似乎没有问题(尽管在语法上,您应该明确地编写连接而不是使用旧语法)。
-
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI
JOIN语法-92 SQL 标准(25 多年前),不鼓励使用它