次の Core Data Service ビュー エンティティ データ定義があるとします。 1 @AccessControl.authorizationCheck: #NOT_REQUIRED 2 DEFINE VIEW ENTITY demo_flight_info_join 3 AS SELECT 4 FROM scarr AS a 5 LEFT OUTER JOIN scounter AS c 6 LEFT OUTER JOIN sairport AS p 7 ON p.id = c.airport 8 ON a.carrid = c.carrid 9 { 10 a.carridAS carrier_id, 11 p.idAS airport_id, 12 c.countnumAS counter_number 13 } 結合ステートメントはどのような順序で実行されますか?
正解:A
The order in which the join statements will be executed is: scarr will be joined with scounter first and the result will be joined with sairport. This is because the join statements are nested from left to right, meaning that the leftmost data source is joined with the next data source, and the result is joined with the next data source, and so on. The join condition for each pair of data sources is specified by the ON clause that follows the data source name. The join type for each pair of data sources is specified by the join operator that precedes the data source name. In this case, the join operator is LEFT OUTER JOIN, which means that all the rows from the left data source are included in the result, and only the matching rows from the right data source are included. If there is no matching row from the right data source, the corresponding fields are filled with initial values1. Therefore, the join statements will be executed as follows: * First, scarr AS a will be joined with scounter AS c using the join condition a.carrid = c.carrid. This means that all the rows from scarr will be included in the result, and only the rows from scounter that have the same value for the carrid field will be included. If there is no matching row from scounter, the countnum field will be filled with an initial value. * Second, the result of the first join will be joined with sairport AS p using the join condition p.id = c. airport. This means that all the rows from the first join will be included in the result, and only the rows from sairport that have the same value for the id field as the airport field from the first join will be included. If there is no matching row from sairport, the id field will be filled with an initial value. References: 1: Join - ABAP Keyword Documentation