Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 奇怪的选择行为:Join起作用,where子句不起作用-为什么和从何时开始?_Sql_Join_Select_Where Clause_Abap - Fatal编程技术网

Sql 奇怪的选择行为:Join起作用,where子句不起作用-为什么和从何时开始?

Sql 奇怪的选择行为:Join起作用,where子句不起作用-为什么和从何时开始?,sql,join,select,where-clause,abap,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_m

我经历了一种奇怪的行为,我已经在考虑找一个合适的心理医生。有人能解释一下这个吗

此选择返回我想要的:

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
选择struc~节点、struc~树\级别、struc~父级、,
支柱~ltext,
马尔~matnr,马尔~mtart,马尔~matkl,
mtx~maktx
从wrf_matgrp_struc作为struc
作为支柱的左侧外部连接wrf_matgrp_strct
在支柱上~hier_id=struc~hier_id
和支柱节点=支柱节点
左外连接wrf_matgrp_sku作为sku
在sku~hier\u id=struc~hier\u id上
而sku~节点=结构节点
左外侧连接mara AS mar
年月日~matnr=sku~matnr
左外连接maw1为maw
在maw~matnr=mar~matnr上
左外连接标记为mtx
在mtx~matnr=mar~matnr上
mtx~spras=支柱~spras
进入表格@lt\u结果\u选项卡
其中struc~hier\u id=@gs\u act\u hier-hier\u id
和@grt_节点中的struc~节点
和struc~date_from=@sy datum
和支柱~spras=@sy langu
以及@grt_matnr中的mar~matnr
以及@grt_matkl中的mar~matkl
以及@grt_wekgr中的maw~wekgr
我移除连接和mtx~spras=strub~spras,并将其放置在类似这样的where条件下,但它无法按预期工作(结果集不完整)

选择struc~节点、struc~树\级别、struc~父级、,
支柱~ltext,
马尔~matnr,马尔~mtart,马尔~matkl,
mtx~maktx
从wrf_matgrp_struc作为struc
作为支柱的左侧外部连接wrf_matgrp_strct
在支柱上~hier_id=struc~hier_id
和支柱节点=支柱节点
左外连接wrf_matgrp_sku作为sku
在sku~hier\u id=struc~hier\u id上
而sku~节点=结构节点
左外侧连接mara AS mar
年月日~matnr=sku~matnr
左外连接maw1为maw
在maw~matnr=mar~matnr上
左外连接标记为mtx
在mtx~matnr=mar~matnr上
进入表格@lt\u结果\u选项卡
其中struc~hier\u id=@gs\u act\u hier-hier\u id
和@grt_节点中的struc~节点
和struc~date_from=@sy datum
和支柱~spras=@sy langu
以及@grt_matnr中的mar~matnr
以及@grt_matkl中的mar~matkl
以及@grt_wekgr中的maw~wekgr
和mtx~spras=@sy langu。

通过将比较移到
where
子句,您已经将
左连接
变成了
内部连接
等待,这是真的吗?外部联接=如果您找到一些条目,应用where子句,否则返回原位。如果您使用的是旧系统,它会告诉您“您无法将来自左联接的字段放入where子句”。。。我想您的SQLs也是如此:(正如您已经看到的,这是一个新的。我知道对旧系统的限制,因此我非常满意,他们扩展了where条件。可能是
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.