我正在尝试使用this页面作为灵感来进行外部连接。我的代码如下
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时,外部连接中的所有其他元素也显示为null,即使它们不是null。有没有更好的方法来写这段代码?我应该把'LEFT‘放在外部连接之前吗?耽误您时间,实在对不起。
发布于 2021-01-26 06:08:24
为了使您的示例更简单,可以考虑让它在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不可用的联接显示为未知。将显示连接的外部部分的值。
由于您没有展示如何获得所有内容的未知值,也许您正在连接未知值?
https://stackoverflow.com/questions/65890635
复制相似问题