2013-06-30 38 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