如何连接到将数据作为值存储在另一个表中的表?

问题描述

希望您能帮助我。

我有2个表(例如T1,T2)。

T1: ID(密钥), maktx, ...

T2: ID(密钥), 标签名(键), 字段名称(键), 字段值, ...

代码下面,我试图从T2中获取所有信息。

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。

我的问题是,对于T1中的所有条目,我都需要T2中的所有字段值,但是我不知道如何解决此问题,因为我还必须检查T2中的字段名。

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[] ) ).