【问题标题】:Conditions on outer joins外连接条件
【发布时间】:2023-03-21 09:40:01
【问题描述】:

我正在尝试提出一个与此 oracle 查询等效的 Access 查询

select ledef_name, 
       count(class.EVT_PK) timesTaught 
from ingenium.ledef course, 
     ingenium.evt class 
where course.LEDEF_PK = class.EVT_LEDEFFK(+)  
  and class.EVT_STARTDT(+) > to_date('2009-01-01', 'yyyy-mm-dd') 
group by ledef_name 

我有访问权限

SELECT course.ledef_name, Count(class.EVT_PK) AS timesTaught
FROM INGENIUM_LEDEF AS course LEFT JOIN INGENIUM_EVT AS class ON course.LEDEF_PK = class.EVT_LEDEFFK
WHERE class.EVT_STARTDT>#1/1/2009#
GROUP BY course.ledef_name;

在 Oracle 版本中,我得到计数​​为 0 的行,但在 Access 中,这些行丢失了。将类中不匹配的行与课程中的行包含在内的访问语法是什么?

【问题讨论】:

    标签: ms-access join


    【解决方案1】:

    我认为您可能需要在 WHERE 子句中添加另一个条件。在 WHERE 子句中添加“ OR Is Null”并尝试一下?

    SELECT course.ledef_name, Count(class.EVT_PK) AS timesTaught
    FROM INGENIUM_LEDEF AS course LEFT JOIN INGENIUM_EVT AS class ON course.LEDEF_PK = 
    class.EVT_LEDEFFK
    WHERE class.EVT_STARTDT>#1/1/2009# OR Is Null
    GROUP BY course.ledef_name;
    

    【讨论】:

      【解决方案2】:

      您是否有机会在连接列中使用浮点值(日期是 Access 中的浮点数)?由于舍入和表示问题,浮点比较并不总是完全匹配(即使它们在查询中打印为完全相同的日期)。

      【讨论】:

        猜你喜欢
        • 2011-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-11
        • 2012-05-31
        • 2020-01-12
        • 1970-01-01
        相关资源
        最近更新 更多