查询将id更改为两个不同的表的名称

时间:2016-02-02 06:04:36

标签: sql postgresql

我有一个表C,其中包含表A的id以及表B的id。如何选择所有唯一行并将id更改为表A和B中的相应名称。

  table contain IDs    Table A           Table B
  ---------------      ---------------   ---------------
  A_id   |  B_id      A_id   |  Name      B_id   |  Name
  ---------------      ---------------   ---------------
  1      |    2        1      |    AA      1      |    a
  1      |    4        2      |    BB      2      |    b
  3      |    2        3      |    CC      3      |    c
  3      |    1        4      |    DD      4      |    d
  3      |    1                 

结果必须是

 ---------------   
  A_Name |  B_Name
  --------------
  AA      |    b 
  AA      |    d 
  CC      |    b 
  CC      |    a

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

一种方法是加入所有三个表:

SELECT DISTINCT A.name, B.name
FROM A 
INNER JOIN C
ON A.A_id = C.A_id
INNER JOIN B
ON B.B_id = C.B_id

'DISTINCT'关键字消除重复(特别是表C中的最后两行)。

此查询适用于我的样本数据。

答案 1 :(得分:0)

你需要的是什么 INNER JOIN INNER JOIN关键字选择两个表中的所有行,只要两个表中的列匹配
DISTINCT DISTINCT关键字只能用于返回不同的(不同的)值。

select distinct a.name,b.name 
from c 
inner join b using(b_id) 
inner join a using(a_id)

浏览PostgreSQL - JOINS了解详情。