具有多个 where 条件的右外连接
Right outer join with multiple where conditions
我在 return 从我的 SQL 查询中获取任何结果时遇到了一些问题。我很确定它与 WHERE 条件有关。
我只想 RULE_ID 被 return 编辑。我在表 1 中通过 RULE_NAME 来识别 RULE_ID。然后我加入 TABLE1 和 TABLE2 并说如果 RULE_ID 的列 DATE 等于 05-MAR-20 并且列 COLUMN3 不为空,return RULE_ID。
目前我没有得到这个查询的任何结果,我也不完全确定为什么。任何帮助将不胜感激!
编辑:COLUMN3 在 TABLE2 中但不在 TABLE1 中。我没有收到错误,只是当我认为我应该得到一些时没有显示结果。如果我删除 AND (TABLE2.DATE = '05-MAR-20')
我会得到几个结果。不知道这是为什么...
sql_query = """
SELECT TABLE1.RULE_ID, TABLE2.RULE_ID
FROM TABLE1
RIGHT OUTER JOIN TABLE2
ON (TABLE1.RULE_ID = TABLE2.RULE_ID)
WHERE (TABLE1.RULE_NAME = 'TEST1' OR TABLE1.RULE_NAME = 'TEST2')
AND (TABLE2.DATE = '05-MAR-20')
AND COLUMN3 IS NOT NULL
"""
使用LEFT JOIN
。更容易遵循逻辑("keep all rows in the first table"。然后将适当的过滤移动到 ON
子句):
SELECT TABLE1.RULE_ID, TABLE2.RULE_ID
FROM TABLE2 LEFT JOIN
TABLE1
ON TABLE1.RULE_ID = TABLE2.RULE_ID AND
TABLE1.RULE_NAME IN ('TEST1', 'TEST2')
WHERE TABLE2.DATE = DATE '2020-03-05' AND TABLE2.COLUMN3 IS NOT NULL
我发现了问题 - 日期带有时间戳。在 dB 中,日期只是说,DD-MON-YY,但是当我 return 日期时,我也有 DD-MON-YY,HH:MM:SS.0。现在必须找到一种方法来摆脱时间戳,只需要日期。
不确定您是否已经看到这个post(或者甚至还在尝试解决这个问题哈哈)但是:how to remove time from datetime
如果我正确理解上面的 post,根据字段的格式和您用于交互的界面,调用 date-time 字段的日期部分的方法可能不同有了它。
我在 return 从我的 SQL 查询中获取任何结果时遇到了一些问题。我很确定它与 WHERE 条件有关。
我只想 RULE_ID 被 return 编辑。我在表 1 中通过 RULE_NAME 来识别 RULE_ID。然后我加入 TABLE1 和 TABLE2 并说如果 RULE_ID 的列 DATE 等于 05-MAR-20 并且列 COLUMN3 不为空,return RULE_ID。
目前我没有得到这个查询的任何结果,我也不完全确定为什么。任何帮助将不胜感激!
编辑:COLUMN3 在 TABLE2 中但不在 TABLE1 中。我没有收到错误,只是当我认为我应该得到一些时没有显示结果。如果我删除 AND (TABLE2.DATE = '05-MAR-20')
我会得到几个结果。不知道这是为什么...
sql_query = """
SELECT TABLE1.RULE_ID, TABLE2.RULE_ID
FROM TABLE1
RIGHT OUTER JOIN TABLE2
ON (TABLE1.RULE_ID = TABLE2.RULE_ID)
WHERE (TABLE1.RULE_NAME = 'TEST1' OR TABLE1.RULE_NAME = 'TEST2')
AND (TABLE2.DATE = '05-MAR-20')
AND COLUMN3 IS NOT NULL
"""
使用LEFT JOIN
。更容易遵循逻辑("keep all rows in the first table"。然后将适当的过滤移动到 ON
子句):
SELECT TABLE1.RULE_ID, TABLE2.RULE_ID
FROM TABLE2 LEFT JOIN
TABLE1
ON TABLE1.RULE_ID = TABLE2.RULE_ID AND
TABLE1.RULE_NAME IN ('TEST1', 'TEST2')
WHERE TABLE2.DATE = DATE '2020-03-05' AND TABLE2.COLUMN3 IS NOT NULL
我发现了问题 - 日期带有时间戳。在 dB 中,日期只是说,DD-MON-YY,但是当我 return 日期时,我也有 DD-MON-YY,HH:MM:SS.0。现在必须找到一种方法来摆脱时间戳,只需要日期。
不确定您是否已经看到这个post(或者甚至还在尝试解决这个问题哈哈)但是:how to remove time from datetime
如果我正确理解上面的 post,根据字段的格式和您用于交互的界面,调用 date-time 字段的日期部分的方法可能不同有了它。