奇怪的选择行为:连接有效,where子句不起作用-为什么以及从何时开始?

时间:2018-06-20 11:04:42

标签: sql join select where-clause abap

我经历了一种奇怪的行为,并且我已经在考虑寻找适当的收缩方法。有人可以在这里解释这个吗?

此选择返回的是我想要的:

SELECT struc~node,struc~tree_level,struc~parent,
       strut~ltext,
       mar~matnr, mar~mtart, mar~matkl,
       mtx~maktx

    FROM            wrf_matgrp_struc AS struc

    LEFT OUTER JOIN wrf_matgrp_strct AS strut
            ON strut~hier_id = struc~hier_id
           AND strut~node    = struc~node

    LEFT OUTER JOIN wrf_matgrp_sku AS sku
            ON sku~hier_id = struc~hier_id
           AND sku~node    = struc~node

    LEFT OUTER JOIN mara AS mar
            ON mar~matnr = sku~matnr

    LEFT OUTER JOIN maw1 AS maw
            ON maw~matnr = mar~matnr

    LEFT OUTER JOIN makt AS mtx
           ON mtx~matnr = mar~matnr
          AND mtx~spras = strut~spras

    INTO TABLE @lt_result_tab
          WHERE struc~hier_id    = @gs_act_hier-hier_id
            AND struc~node      IN @grt_node
            AND struc~date_from <= @sy-datum
            AND struc~date_to   >= @sy-datum
            AND strut~spras      = @sy-langu
            AND mar~matnr       IN @grt_matnr
            AND mar~matkl       IN @grt_matkl
            AND maw~wekgr       IN @grt_wekgr

我删除了连接 AND mtx〜spras = strut〜spras ,并将其放置在这样的条件下,但无法按预期工作(结果集不完整)。

SELECT struc~node,struc~tree_level,struc~parent,
       strut~ltext,
       mar~matnr, mar~mtart, mar~matkl,
       mtx~maktx

    FROM            wrf_matgrp_struc AS struc

    LEFT OUTER JOIN wrf_matgrp_strct AS strut
            ON strut~hier_id = struc~hier_id
           AND strut~node    = struc~node

    LEFT OUTER JOIN wrf_matgrp_sku AS sku
            ON sku~hier_id = struc~hier_id
           AND sku~node    = struc~node

    LEFT OUTER JOIN mara AS mar
            ON mar~matnr = sku~matnr

    LEFT OUTER JOIN maw1 AS maw
            ON maw~matnr = mar~matnr

    LEFT OUTER JOIN makt AS mtx
           ON mtx~matnr = mar~matnr

    INTO TABLE @lt_result_tab
          WHERE struc~hier_id    = @gs_act_hier-hier_id
            AND struc~node      IN @grt_node
            AND struc~date_from <= @sy-datum
            AND struc~date_to   >= @sy-datum
            AND strut~spras      = @sy-langu
            AND mar~matnr       IN @grt_matnr
            AND mar~matkl       IN @grt_matkl
            AND maw~wekgr       IN @grt_wekgr
            AND mtx~spras        = @sy-langu.

0 个答案:

没有答案