根据相似的值获取数据

时间:2018-12-25 08:28:55

标签: sql spring postgresql spring-mvc

我有两个表table1和table2。

表1具有:

code   name
 10     ABC
 11     DEF
 12     FGH

table2具有:

code1  code2   code3      Buyer    
10       11      12        AAA        
12       11      10        BBB       
11       12      10        CCC        

现在,我要进行SQL查询,以获取代码1,代码2,代码3,买方和代码1,代码2和代码3的名称。 我的SQL查询是:

SELECT t1.name, t2.code, t2.issued, t2.balance 
FROM table1 t1, table2 t2 
WHERE t1.code = t2.code; 

使用此SQL查询,并不是基于每个代码都提取名称。输出错误。 我想要类似{code1 = 10,name = ABC,code2 = 11,name = DEF,code3 = 12,name = FGH,Buyer = AAA}的输出

2 个答案:

答案 0 :(得分:2)

您必须使用不同的别名多次连接表

SELECT t2.code, t2.issued, t2.balance,
       tname1.name as code1_name,
       tname2.name as code2_name,
       tname3.name as code3_name
FROM table2 t2
JOIN table1 tname1 WHERE tname1.code = t2.code1
JOIN table1 tname2 WHERE tname2.code = t2.code2
JOIN table1 tname3 WHERE tname3.code = t2.code3

答案 1 :(得分:1)

您肯定需要分别对代码c1,c2,c3名称进行3次联接,如下所示。

         Select code1,c1.name,code2
        ,c2.name,code3,c3.name,buyer
        from table2,
        table1 c1,table1 c2,table1 c3 where 
        c1.code=code1 and c2.code=code2 and 
        c3.code=code3