mysql - 如何显示引用主表上的两个外部 ID 键的表的字符串值

标签 mysql join foreign-keys

所以我有这个数据库

表格:费率

ID  |  FID  |  TID  |  RATE
---------------------------
 1  |   1   |   2   |  0.3
 2  |   1   |   3   |  1.2
 3  |   1   |   4   |  4.5
 4  |   2   |   1   |  1.3
 5  |   2   |   3   |  3.3
 6  |   2   |   4   |  4.4

表:货币

ID  |   Name   |  Symbol
---------------------
 1  |   Euro   |   E   
 2  |   Pound  |   P   
 3  |  Dollar  |   $   
 4  |   CAD    |   C

到目前为止我尝试的是

SELECT  rates.*,
    currencies.name,
    currencies.symbol FROM RATES 
JOIN CURRENCIES ON
(rates.fid = currencies.id)

这有效但仅适用于 1 列。我找不到添加更多的方法。我还想为每种货币提供自定义输出名称。所以最终的输出应该是:

ID | FromCurrency (FID) | ToCurrency (TID) | Rate   

最佳答案

您需要执行多个连接,并且由于您对两个连接使用同一个表,请为它们指定一个别名。

像这样:

SELECT  rates.ID,
    a.name AS 'FromCurrency (FID)',
    a.symbol AS 'FID Symbol',
    b.name AS 'ToCurrency (TID)',
    b.symbol AS 'TID Symbol',
    rates.rate
FROM RATES 
JOIN CURRENCIES AS a ON
(rates.fid = a.id)
JOIN CURRENCIES AS b ON
(rates.tid = b.id)

Here is a working example

关于mysql - 如何显示引用主表上的两个外部 ID 键的表的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27270576/

相关文章:

php - 如何根据单元格之一的值更改动态填充表格行的背景颜色?

mysql - 如何为查询设置连接和分组索引

php - 通过 sql 查询删除记录及其外键

mysql - 从主机连接到 docker 容器中的 mysql

mysql - 无法打开我的主页,而是从 mysql 获取旧的警告消息

mysql - 哪个 NoSql 用于存储数十亿个整数对数据?

mysql - 由于Join太长(MySQL),我们可以使用嵌套查询来代替Join吗?

MySQL 从多个表中连接多个列

mysql - MySQL InnoDB 是否总是需要为每个外键约束创建一个索引?

mysql - 在数据库书架中创建表,其中一本书可以有多个类别