2013-06-30 37 views
0

参考从同一个表连接选择我有两个表:SQLite的使用来自另一表

表:分

|key_id | name | x | y | 
------------------------ 
|1  | A |10 |20 | 
|2  | A_1 |11 |21 | 
|3  | B |30 |40 | 
|4  | B_1 |31 |42 | 

表:对

|f_key_p1 | f_key_p2 | 
---------------------- 
|1  | 2  | 
|3  | 4  | 

表 '对' 定义哪些表'点'中的行应该配对。 如何查询数据库以选择配对的行? 我想要的查询结果会是这样:

|name_1|x_1|x_2|name_2|x_2|y_2| 
------------------------------- 
|A  |10 |20 |A_1 |11 |21 | 
|B  |30 |40 |B_1 |31 |41 | 

回答

3

您刚刚加入从pointspairspairs再次points。例如。是这样的:(简称JOIN

SELECT 
p1.name AS name_1, p1.x AS x_1, p1.y AS y_1, 
p2.name AS name_2, p2.x AS x_2, p2.y AS y_2 
FROM points as p1 
INNER JOIN pairs ON (p1.key_id = pairs.f_key_p1) 
INNER JOIN points AS p2 ON (pairs.f_key_p2 = p2.key_id); 

使用INNER JOIN结合行只有在有两个表中的匹配。

1
select p1.name name_1, p1.x x_1, p1.y y_1, p2.name name_2, p2.x x_2, p2.y y_2 
from points p1 join pairs p on p1.key_id = p.f_key_p1 
       join points p2 on p2.key_id = p.f_key_p2 
+0

感谢您的帮助。我决定承认thpani的答案,因为它更清晰,他需要声誉得分。最好的祝福。 – daikini