SQL JOIN在同一列上两次

use*_*285 2 sql postgresql

假设我有一个表[public].[ids],其中包含客户ID的映射

public.ids

old_id | new_id
===============
   100 |   1000
   101 |   1001
   102 |   1002
Run Code Online (Sandbox Code Playgroud)

我还有一个推荐表,当客户引用另一行时,我会记录一行:

public.referrals

referring_id | referred_id
==========================
         100 |         101
         101 |         102
Run Code Online (Sandbox Code Playgroud)

我想知道使用新的id这个表是什么样的.这意味着我必须两次加入推荐表.一次用于refer_id,一次用于referenced_id.最终,我想要一个看起来像这样的表:

结果

referring_new_id | referred_new_id
==================================
            1000 |            1001
            1001 |            1002
Run Code Online (Sandbox Code Playgroud)

如何通过自定义命名这些新列来实现此目的?我正在使用postgresql,但任何SQL风格都会有所帮助.

Sql*_*Zim 5

使用两个连接:

select 
    i1.new_id as referring_new_id
  , i2.new_id as referred_new_id
from referrals r
  inner join ids i1 on r.referring_id = i1.old_id
  inner join ids i2 on r.referred_id  = i2.old_id;
Run Code Online (Sandbox Code Playgroud)

rextester演示:http://rextester.com/VMJHE81524

收益:

+------------------+-----------------+
| referring_new_id | referred_new_id |
+------------------+-----------------+
|             1000 |            1001 |
|             1001 |            1002 |
+------------------+-----------------+
Run Code Online (Sandbox Code Playgroud)