sql - 加入返回意外的空结果
问题描述
我希望你能帮助我。
Ι 有2个表(例如T1,T2):
- T1:ID(密钥),maktx,...
- T2:ID(键),标签名(键),字段名(键),字段值,...
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。
我的问题是它什么也不返回。我不知道如何解决这个问题。
PS我不是这个系统的创造者,不能对其进行任何结构上的改变,只是试图解决这个问题。
任何帮助,将不胜感激。
解决方案
一个字段不能同时有两个不同的值(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[] ) ).
推荐阅读
- ios - iOS - 如何确定是否在扬声器和电视下选择了 Apple TV?
- django - Django 模板,我如何通过使用 {% now 'F jS Y' %} 来使用 if 条件
- reactjs - WebView crashing Expo
- python - How to properly extend a setter in python?
- python - ModuleNotFoundError: No module named my package but I can find it in pip freeze
- linux - How to solve $PATH not resolving in VSCode
- json - Saving a JSON file outside of a async fetch function
- google-sheets - Google表格数据透视表计数每个数据值的出现次数
- reactjs - 在加载和更改后获取 JSX 的元素类名
- c# - 对 Autofac 中间件模块感到困惑