[英]Does a OUTER-JOIN always divide the query in two parts, leaving the part on the right empty if not complete in Progress?
我正在嘗試使用 此頁面作為靈感進行 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.
發生的問題是當 null 中的 1 個元素時,OUTER-JOIN 中的所有其他元素也顯示為 null,即使它們不是 Z37A6259CC0C1DAE299A7866489DFFBD0。 有沒有更好的方法來編寫這段代碼? 我應該在 OUTER-JOIN 之前加上“LEFT”嗎? 謝謝你的時間。
為了使您的示例更簡單,請考慮使其在 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 。 顯示連接外部的值。
由於您沒有顯示如何為所有內容獲得未知值,因此您可能正在連接未知值?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.