使用来自其他两个表的字段选择映射表

时间:2013-06-11 11:39:48

标签: sql inner-join

我有一个映射表,引用来自两个不同表的ID。我想选择映射表,每个id被相应表中的另一个字段替换。

更明确一点:有三个表,每个表有两列:

  • Table1有一个id(主键)和field1
  • Table2有一个id(主键)和field2
  • Table3(映射表)包含字段Table1_id(在Table1.id中取值)和Table2_id(在Table2.id中取值)

我想要的是将Table1.field1和Table2.field2作为列获取Table3的内容。

我知道如何使用内部联接替换映射表中的一个列与其他一个表的另一列:

SELECT Table1.field1, Table3.Table2_id
FROM Table1
INNER JOIN Table3
ON Table1.id=Table3.Table1_id; 

然而我不知道如何用两个列基本上做同样的事情。

4 个答案:

答案 0 :(得分:5)

如果我理解正确,你试图从表1中获取field1,从表2中获取field2。如果是这样,你只需要加入三个表

SELECT a.field1, c.field2
FROM Table1 a
INNER JOIN Table3 b
ON a.id=b.Table1_id
INNER JOIN Table2 c
ON b.Table2_id = c.id

答案 1 :(得分:0)

做另一次加入。

SELECT Table1.field1, Table2.field
FROM Table1
INNER JOIN Table3
ON Table1.id = Table3.Table1_id
INNER JOIN Table 2 
ON Table2.id = table3.table2_id; 

答案 2 :(得分:0)

你只需要加入所有三个表;

之类的东西
SELECT Table1.Field1, Table2.Field2
FROM Table3
JOIN Table1 ON Table1.Id = Table3.Table1_id
JOIN Table2 ON Table2.Id = Table3.Table2_id

答案 3 :(得分:0)

我不知道我是否理解你想要达到的目标但是这应该可以得到两个表格加入的结果

SELECT Table1.field1, Table2.field2
FROM Table1
INNER JOIN Table3 ON Table1.id = Table3.Table1_id;
INNER JOIN Table2 ON Table2.id = Table3.Table2_id;