在多个条件下连接表

时间:2014-07-31 21:31:35

标签: sql sqlite

我有一点问题 - 因为我在SQL方面不是很有经验 - 关于在多个值上加入同一个表。想象一下有表1(称为字符串):

id     value
1      value1
2      value2

然后有表2(称为地图):

id     name     description
1      1        2

所以name是对Strings表的引用,描述也是如此。没有引用Strings表的第二个字段就没问题了,id只是在Strings.id = Maps.name上进行内部连接。但现在id喜欢获取实际字符串也用于描述。 SELECT的最佳方法是什么才能让我回归?现在它看起来像这样:

SELECT Maps.id, Strings.value AS mapName FROM Maps INNER JOIN Strings ON Strings.id = Maps.name;

但这显然只涵盖了一个本地化名称。提前谢谢。

2 个答案:

答案 0 :(得分:2)

您可以通过两个连接到同一个表来执行此操作:

SELECT m.id, sname.value AS mapName, sdesc.value as description
FROM Maps m INNER JOIN
     Strings sname
     ON sname.id = m.name INNER JOIN
     Strings desc
     ON sdesc.id = m.description;

请注意使用表别名来区分这两个表。

答案 1 :(得分:1)

只要您想从另一个表中获取单个值,就可以使用子查询来执行这些查找:

SELECT id,
       (SELECT value FROM Strings WHERE id = Maps.name) AS name,
       (SELECT value FROM Strings WHERE id = Maps.description) AS description
FROM Maps