繁体   English   中英

OUTER-JOIN 是否总是将查询分为两部分,如果在 Progress 中未完成,则将右侧的部分留空?

Does a OUTER-JOIN always divide the query in two parts, leaving the part on the right empty if not complete in Progress?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试使用 页面作为灵感进行 OUTER-JOIN。 我的代码如下

OPEN QUERY qMovto
FOR EACH movto-estoq
WHERE movto-estoq.lote BEGINS pc-lote
AND movto-estoq.it-codigo BEGINS pc-it-codigo
AND movto-estoq.dt-trans >=  pd-data1
AND movto-estoq.dt-trans <=  pd-data2
AND movto-estoq.cod-emitente = pi-cod-emitente,
    EACH item OUTER-JOIN
    WHERE movto-estoq.it-codigo = item.it-codigo,
        EACH item-cli OUTER-JOIN
        WHERE item-cli.item-do-cli BEGINS pc-item-cli
        AND movto-estoq.cod-emitente = item-cli.cod-emitente
        AND movto-estoq.it-codigo = item-cli.it-codigo
        AND movto-estoq.un = item-cli.unid-med-cli,    
            EACH nota-fiscal OUTER-JOIN
            WHERE movto-estoq.nro-docto = nota-fiscal.nr-nota-fis
            BY movto-estoq.dt-trans DESCENDING BY movto-estoq.hr-trans DESCENDING.

发生的问题是当 1 个元素为 null 时,OUTER-JOIN 中的所有其他元素也显示为 null,即使它们不为 null。 有没有更好的方法来编写这段代码? 我应该在 OUTER-JOIN 之前放 'LEFT' 吗? 谢谢你的时间。

1 个回复

为了使您的示例更简单,请考虑从 ABL dojo 使其工作。 以下代码:

define temp-table ttone
   field ii as int
   .

define temp-table tttwo
   field ii as int
   field cc as char
   .

create ttone. ttone.ii = 1.
create ttone. ttone.ii = 2.
create tttwo. tttwo.ii = 2. tttwo.cc = "inner".
create tttwo. tttwo.ii = 3. tttwo.cc = "orphan".

define query q for ttone, tttwo.
open query q 
    for each ttone, 
    each tttwo outer-join where tttwo.ii = ttone.ii.
    
get first q.
do while available ttone:
   message ttone.ii tttwo.cc.
   get next q.
end.

可以从https://abldojo.services.progress.com/?shareId=600f40919585066c219797ed运行

如您所见,这会导致:

1 ?
2 inner

不可用的连接显示为unknown 联接的外部分的值示出。

由于您没有展示如何为所有内容获得未知值,也许您正在连接未知值?

1 Mongodb中的全外部联接查询概念

如何在MongoDB中实现完全外部联接。 考虑到我有两个集合,需要使用mongo查询合并为一个集合。 用户集合 会员收藏 作为结果的一个集合 ...

2019-12-09 12:23:12 0 211   mongodb
6 为什么这会让外部联接查询拒绝在phpMyAdmin中完成?

编辑:所以查询确实有效,但在我的localhost机器上运行需要一分钟。 不可否认,我的本地主机上的表格相当大(每个大约8000行),但在生产中,每个表格的行数可能超过25,000行。 有没有办法优化这个,所以它不需要那么长时间? 如其中一条评论所示,两个表都已编入索引。 我有两个表 ...

7 使用OUTER RIGHT JOIN的SQL查询

我有两个表,比如table1有7条记录,table2只有2条记录。 我想要来自两个表的匹配记录,即第二个表中只有2个记录。 我不确定在这里使用连接。 当我执行查询时,它显示了所有7条记录。 建议我你的想法。 我尝试使用RIGHT JOIN,但仍然显示了7条记录。 表格1 ...

2019-03-29 12:02:10 3 37   sql
8 左或右外部联接进行查询

我有这个查询: 结果是这样的: 现在,我希望查询的结果是: 实际上,我想将网络上的权限授予某些用户。 该用户既可以在网络上拥有权限,也可以在其他网络上拥有权限。 因此,在这种情况下,用户Luca仅在网络9124823324095上具有权限,而用户Irene在两个不同的 ...

9 MySQL右外连接查询

我有一个关于MySQL查询的查询。 我有2个表,一个表包含SalesRep详细信息,例如名称,电子邮件等。我还有另一个表,其中包含具有reportDate,服务的客户并通过外键链接到salesrep的销售数据。 需要注意的一件事是reportDate始终是星期五。 因此要求是这样的 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM