ABAP CDS中的Join

2021-04-30 17:55:32 浏览数 (2)

CDS中支持的join有:

  • Inner Join

define view ztest_cds3 as select from sflight as _sf

inner join spfli as _spf

on _sf.carrid = _spf.carrid

and _sf.connid = _spf.connid{

_sf.carrid,

_sf.connid,

_sf.fldate,

_sf.price,

_spf.countryf

}

Inner Join返回结果为表sflight与spfli之间的交集

  • Left outer join

define view ztest_cds3 as select from sflight as _sf

left outer join spfli as _spf

on _sf.carrid = _spf.carrid

and _sf.connid = _spf.connid{

_sf.carrid,

_sf.connid,

_sf.fldate,

_sf.price,

_spf.countryf

}

LEFT OUTER JOIN返回左表 sflight 的全部行和右表 spfli 满足ON条件的行,如果左表 sflight 的行在右表 spfli 中没有匹配,那么这一行右表 spfli 中对应数据用NULL代替。

LEFT OUTER JOIN产生左表 sflight 的完全集,而右表 spfli 中匹配的则有值,没有匹配的则以null值取代。

  • Right outer join

define view ztest_cds3 as select from sflight as _sf

right outer join spfli as _spf

on _sf.carrid = _spf.carrid

and _sf.connid = _spf.connid{

_sf.carrid,

_sf.connid,

_sf.fldate,

_sf.price,

_spf.countryf

}

RIGHT OUTER JOIN返回右表 spfli 的全部行和左表 sflight 满足ON条件的行,如果右表 spfli 的行在左表 sflight 中没有匹配,那么这一行 左表sflight 中对应数据用NULL代替。

RIGHT Outer JOIN产生右表 spfli 的完全集,而左表 sflight 中匹配的则有值,没有匹配的则以null值取代。

  • Cross join

define view ztest_cds3 as select from sflight

cross join spfli{

sflight.carrid,

spfli.connid

}where sflight.carrid = 'AA'

cross join 返回两个表的笛卡尔积。如果不加where条件, 那产生的数据将非常大。

0 人点赞