基于3个表之间的关系从IBM DB2查找表中提取值

时间:2018-07-12 21:04:29

标签: sql db2

我衷心希望我在标题中输入的内容不会引起混淆。我也希望我能正确解释。简而言之,我有3个表,如下所示:

TABLE_A
id *
value

TABLE_B
id *
other_id

TABLE_C
other_id *
name_of_product

我想基于TABLE_A和TABLE_B之间的匹配ID,以及TABLE_B和TABLE_C之间的匹配ID,从TABLE_A中提取多个值,从TABLE_C中提取一个值。我尝试搜索此内容,但尚未找到与我的问题直接相关的任何内容。我已经尝试过此SQL代码,但我知道它是错误的:

    SELECT
        TRIM(id)            primary_key_value, 
        a.value             name, 
        c.name_of_product   product 
    FROM   TABLE_A a, TABLE_C c 
    JOIN   TABLE_A t1 ON t1.id = a.id
    JOIN   TABLE_B t2 ON t2.other_id = c.other_id
    WHERE  c.name_of_product  = 'widget'

任何帮助将不胜感激。如果上面的代码不明显,我应该声明自己是SQL新手。谢谢。

1 个答案:

答案 0 :(得分:2)

似乎您需要两个join

SELECT TRIM(a.id) as primary_key_value, 
       a.value as name, 
       c.name_of_product as product 
FROM TABLE_A a JOIN
     TABLE_B b
     ON b.id = a.id JOIN
     TABLE_C c
     ON c.other_id = b.other_id
WHERE c.name_of_product = 'widget'