2

所以我有两张桌子。一个是看起来像这样的客户

+----------+-----------+----------+-------------+--------+---------+---------+----------------+------------+-------+---------+
| ClientId | FirstName | LastName | DateOfBirth | Gender | PriLang | SecLang | Address        | City       | State | ZipCode |
+----------+-----------+----------+-------------+--------+---------+---------+----------------+------------+-------+---------+
|    00002 | Peter     | Parker   | 2001-08-10  | Male   |       4 |       1 | 2389 Some Road | Where City | MA    | 60042   |
+----------+-----------+----------+-------------+--------+---------+---------+----------------+------------+-------+---------+

另一个是语言

+-------------------+-----------------+
| LanguageId        | LanguageName    |
+-------------------+-----------------+
|                 1 | English         |
|                 2 | Spanish         |
|                 3 | Vietnamese      |
|                 4 | French          |
|                 5 | Korean          |
|                 6 | Japanese        |
|                 7 | Italian         |
+-------------------+-----------------+

我不知道如何用语言表中的语言名称替换 PriLang 和 SecLang 中的外键值。

4

1 回答 1

0

你必须加入语言表两次


查询 #1

SELECT 
`ClientId`, `FirstName`, `LastName`, `DateOfBirth`, `Gender`
, l1.LanguageName 'PriLang', l2.LanguageName 'SecLang', `Address`, `City`, `State`, `ZipCode`
FROM client c
INNER JOIN 
language l1 ON c.PriLang = l1.LanguageId
INNER JOIN 
language l2 ON c.SecLang = l2.LanguageId;

| ClientId | FirstName | LastName | DateOfBirth | Gender | Address        | City       | State | ZipCode | PriLang | SecLang |
| -------- | --------- | -------- | ----------- | ------ | -------------- | ---------- | ----- | ------- | ------- | ------- |
| 2        | Peter     | Parker   | 2001-08-10  | Male   | 2389 Some Road | Where City | MA    | 60042   | French  | English |

在 DB Fiddle 上查看

于 2020-05-19T20:41:54.250 回答