【发布时间】:2020-11-21 05:25:35
【问题描述】:
所以,我有一个 exchange_rate 表,其中包含 fromcurr_id 和 tocurr_id,并且根据 id 的货币名称在另一个表 currency 中。
exchng_rate_id | fromcurr_id | tocurr_id | exchange_rate
----------------+-------------+-----------+---------------
1 | 1 | 2 | 5.0000000000
2 | 1 | 3 | 3.0000000000
3 | 1 | 4 | 6.0000000000
4 | 1 | 5 | 2.0000000000
5 | 2 | 3 | 5.0000000000
6 | 2 | 4 | 7.0000000000
7 | 2 | 5 | 3.0000000000
8 | 3 | 4 | 1.0000000000
9 | 3 | 5 | 4.0000000000
10 | 4 | 5 | 2.0000000000
这里是货币表的描述:
Column | Type | Collation | Nullable | Default
---------+------------------------+-----------+----------+--------------------------------------
id | integer | | not null | nextval('currency_id_seq'::regclass)
curr_id | integer | | not null |
name | character varying(255) | | |
我需要显示哪个 id 属于哪个货币名称。(即 fromcurr_id = name 和 tocurr_id = name)
这是我尝试过的......
查询1: 尝试对表进行内部连接,但结果仅产生 fromcurr_id 的名称。
select name, fromcurr_id, tocurr_id, name, exchange_rate
from exchange_rate
inner join currency on exchange_rate.fromcurr_id = currency.curr_id;
结果:
name | fromcurr_id | tocurr_id | name | exchange_rate
----------------+-------------+-----------+----------------+---------------
************** | 1 | 2 | ************** | 5.0000000000
************** | 1 | 3 | ************** | 3.0000000000
************** | 1 | 4 | ************** | 6.0000000000
************** | 1 | 5 | ************** | 2.0000000000
************* | 2 | 3 | ************ | 5.0000000000
************ | 2 | 4 |************** | 7.0000000000
************* | 2 | 5 | ************ | 3.0000000000
************** | 3 | 4 | ************** | 1.0000000000
************** | 3 | 5 | ************** | 4.0000000000
************** | 4 | 5 | ************** | 2.0000000000
(10 rows)
第一种情况的名称与第二种情况相同,而不是根据货币表。 (必须审查数据保密)
查询2: 尝试了两个条件的内连接。
select name, fromcurr_id, tocurr_id, name, exchange_rate
from exchange_rate
inner join currency on exchange_rate.fromcurr_id = currency.curr_id
and exchange_rate.tocurr_id = currency.curr_id;
这显示没有结果。
【问题讨论】:
标签: sql postgresql join inner-join