Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何显示引用主表上两个外部ID键的表的字符串值_Mysql_Join_Foreign Keys - Fatal编程技术网

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

Mysql 如何显示引用主表上两个外部ID键的表的字符串值,mysql,join,foreign-keys,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

所以我有这个数据库

表格:费率

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
表格:货币

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)

所以您需要从货币->欧元-/code>
到货币->美元这样的货币名称?是的。只有外汇表的id漂亮地显示为与汇率表中的id相同的名称。选择rates.id,currences.name作为from currency,currences.name作为currency,rates.rate from rates JOIN currences ON(rates.fid=currences.id)应该是这样的,尽管我遗漏了一些东西。这是不正确的。工作就像做梦一样。谢谢“AS”命令是我缺少的。最后一个SQL代码是:选择rates.id,fc.name作为fromCurrency,tc.name作为toCurrency,rates.rate从rates加入货币作为fc ON(rates.fid=fc.id)加入货币作为tc ON(rates.tid=tc.id)