我的数据库上有3个表。假设它们被命名为ACC,POS,CON。
在ACC表中,我有ID和NAME列。在POS表中,有LAT和LONG列,在CON表,AccID和FrID列。
举个例子。
ACC / POS / CON
ID NAME / ID LAT LONG / AccID FrID
1 Mike 1 10 15 1 2
2 Bob 2 20 25 1 4
3 Jack 3 18 21 2 3
4 Rocky 4 37 45 2 1
这是我3张桌子的数据。现在我想从NAME中的POS和NAME值中选择所有LAT和LONG值,其中包含FrID中的AccID。
更具体地说,我想查看Mike的朋友的Lat Long。在Con表上有两个Mike的朋友,ID = 2,ID = 4,所以我想得到一张像这样的表。
ACC_NAME LAT LONG
Bob 20 25
Rocky 37 45
你能给我一个查询这个问题的例子。谢谢。
答案 0 :(得分:2)
您可以尝试使用INNER JOIN
。这是完整的查询: -
SELECT ACC.Name, POS.LAT, POS.LONG FROM CON
INNER JOIN ACC ON CON.FrID = ACC.ID
INNER JOIN POS ON POS.ID = ACC.ID
WHERE CON.AccID = 1
解释
获取迈克的所有朋友
SELECT * FROM CON
WHERE CON.AccID = 1 -- Mike Account Id
通过加入Acc Table获取好友名称
SELECT ACC.Name FROM CON
INNER JOIN ACC ON CON.FrID = ACC.ID
WHERE CON.AccID = 1
加入POS表
获取拉特龙 SELECT ACC.Name, POS.LAT, POS.LONG FROM CON
INNER JOIN ACC ON CON.FrID = ACC.ID
INNER JOIN POS ON POS.ID = ACC.ID
WHERE CON.AccID = 1