Inner Join, Left Outer Join和Association的區別

i042416發表於2018-03-02

測試用的CDS檢視的原始碼,第8行用Inner Join連線TJ02T, 後者存放了所有系統狀態的ID和描述。

Inner Join, Left Outer Join和Association的區別

Inner Join測試結果:對於那些在TJ02T裡沒有維護描述資訊的狀態,它們不會出現在結果集裡。

Inner Join, Left Outer Join和Association的區別

把第八行的Inner Join改成Outer Join,測試結果相反:注意觀察下圖stat列值為E0001的行專案也出現在了結果集裡。

Inner Join, Left Outer Join和Association的區別

Association的測試結果同Left Outer Join一致。

Inner Join, Left Outer Join和Association的區別

Association的底層實現實際上和Left Outer Join一致。有兩種辦法來驗證這個結論。

方法1

在ABAP Development Studio裡預覽一個含有association實現的CDS view,能夠在工具裡發現該association最後是透過Left Outer Join實現的。

Inner Join, Left Outer Join和Association的區別

方法2

事務碼ST05裡的這個按鈕: 顯示執行計劃,也能顯示出association底層是由Left Outer Join實現的。

Inner Join, Left Outer Join和Association的區別
Inner Join, Left Outer Join和Association的區別

要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:


Inner Join, Left Outer Join和Association的區別
Inner Join, Left Outer Join和Association的區別

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2151456/,如需轉載,請註明出處,否則將追究法律責任。

相關文章