mysql连接三个表,用它的值替换id

时间:2017-04-21 09:24:02

标签: mysql sql join subquery

我有三张桌子可供使用:

event Table

id | round | nameA | nameB | place
-- | ----- | ----- | ----- | -----
1  | 1     | 1     | 3     | 1
2  | 1     | 2     | 4     | 2

name Table

id | name | shortName | place
-- | ---- | --------- | -----
1  | A    | a         | 1
2  | B    | b         | 2
3  | C    | c         | 3
4  | D    | d         | 4

place Table

id | name
-- | ---
1  | p1
2  | p2
3  | p3
4  | p4

事件表接近我想要的但是它们充满了id。我想用nameA,nameB的短名称替换id,以及像这样的完整地名:

nameA.shortName | nameB.shortName | place.name
--------------- | --------------- | ----------
 a              | c               | p1
 b              | d               | p2

到目前为止,我设法用nameA的名称和短名称替换地方ID

SELECT n.shortName, e.nameB,  p.name
FROM event e
  INNER JOIN name n
    ON  n.id = e.nameA
  INNER JOIN place p
    ON e.place = g.id

但是,nameB仍然在其id

nameA.shortName | nameB.id        | place.id
--------------- | --------------- | ----------
 a              | 3               | p1
 c              | 4               | p2

我猜是加入和子查询。我知道如何获取短名称和地名,但是如何将它们与主查询集成?

SELECT n.shortName
  FROM name n
    JOIN  event e
    ON n.id = e.nameB

1 个答案:

答案 0 :(得分:1)

针对您想要评估的每个字段,针对名称表加入一次表: -

listed