加入 returns 意外的空结果
Join returns unexpected empty result
希望你能帮帮我。
我有 2 个表(例如 T1、T2):
- T1:ID(密钥),maktx,...
- T2:ID(键)、tabname(键)、fieldname(键)、fieldvalue,...
T1 和 T2 分别包含 2 行和 3 行:
T1: T2:
ID MAKTX ID TABNAME FIELDNAME FIELDVALUE
-- ----- -- ------- --------- ----------
1 text1 1 X MATNR MATNR1
2 text2 2 X WERKS WERKS2
2 X LGORT LGORT2
SQL 代码应输出如下:
ID1 MAKTX ID2 TABNAME FIELDNAME FIELDVALUE
--- ----- --- ------- --------- ----------
1 text1 1 X MATNR MATNR1
2 text2 2 X WERKS WERKS2
下面是我试过的代码:
ir_id = VALUE #( ).
ir_matnr = VALUE #( sign = 'I' option = 'EQ' ( low = 'MATNR1' ) ).
ir_werks = VALUE #( sign = 'I' option = 'EQ' ( low = 'WERKS2' ) ).
SELECT *
FROM T1
JOIN T2 on T1~id = T2~id
INTO CORRESPONDING FIELDS OF table <et_result>
WHERE T1~id IN ir_id[]
AND ( T2~fieldname = 'MATNR' AND T2~fieldvalue IN ir_matnr[] )
AND ( T2~fieldname = 'WERKS' AND T2~fieldvalue IN ir_werks[] )
T1 和 T2 结构不同,但 ID 相同。
我的问题是它returns没什么。我不知道如何解决这个问题。
P.S。我不是这个系统的创造者,不能对其进行任何结构上的改变,只是想解决这个问题。
如有任何帮助,我们将不胜感激。
一个字段不能同时有两个不同的值(MATNR和WERKS),所以AND条件要改成OR:
SELECT *
FROM T1
JOIN T2 on T1~id = T2~id
INTO CORRESPONDING FIELDS OF table <et_result>
WHERE T1~id IN ir_id[]
AND ( ( T2~fieldname = 'MATNR' AND T2~fieldvalue IN ir_matnr[] )
OR ( T2~fieldname = 'WERKS' AND T2~fieldvalue IN ir_werks[] ) ).
希望你能帮帮我。
我有 2 个表(例如 T1、T2):
- T1:ID(密钥),maktx,...
- T2:ID(键)、tabname(键)、fieldname(键)、fieldvalue,...
T1 和 T2 分别包含 2 行和 3 行:
T1: T2:
ID MAKTX ID TABNAME FIELDNAME FIELDVALUE
-- ----- -- ------- --------- ----------
1 text1 1 X MATNR MATNR1
2 text2 2 X WERKS WERKS2
2 X LGORT LGORT2
SQL 代码应输出如下:
ID1 MAKTX ID2 TABNAME FIELDNAME FIELDVALUE
--- ----- --- ------- --------- ----------
1 text1 1 X MATNR MATNR1
2 text2 2 X WERKS WERKS2
下面是我试过的代码:
ir_id = VALUE #( ).
ir_matnr = VALUE #( sign = 'I' option = 'EQ' ( low = 'MATNR1' ) ).
ir_werks = VALUE #( sign = 'I' option = 'EQ' ( low = 'WERKS2' ) ).
SELECT *
FROM T1
JOIN T2 on T1~id = T2~id
INTO CORRESPONDING FIELDS OF table <et_result>
WHERE T1~id IN ir_id[]
AND ( T2~fieldname = 'MATNR' AND T2~fieldvalue IN ir_matnr[] )
AND ( T2~fieldname = 'WERKS' AND T2~fieldvalue IN ir_werks[] )
T1 和 T2 结构不同,但 ID 相同。
我的问题是它returns没什么。我不知道如何解决这个问题。
P.S。我不是这个系统的创造者,不能对其进行任何结构上的改变,只是想解决这个问题。
如有任何帮助,我们将不胜感激。
一个字段不能同时有两个不同的值(MATNR和WERKS),所以AND条件要改成OR:
SELECT *
FROM T1
JOIN T2 on T1~id = T2~id
INTO CORRESPONDING FIELDS OF table <et_result>
WHERE T1~id IN ir_id[]
AND ( ( T2~fieldname = 'MATNR' AND T2~fieldvalue IN ir_matnr[] )
OR ( T2~fieldname = 'WERKS' AND T2~fieldvalue IN ir_werks[] ) ).