使用SQL数据库中另一个表的数据从两个表中获取数据

时间:2016-06-09 20:27:42

标签: mysql sql sql-server database

我的数据库上有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 

你能给我一个查询这个问题的例子。谢谢。

1 个答案:

答案 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

解释

  1. 获取迈克的所有朋友

    SELECT * FROM CON WHERE CON.AccID = 1 -- Mike Account Id

  2. 通过加入Acc Table获取好友名称

    SELECT ACC.Name FROM CON INNER JOIN ACC ON CON.FrID = ACC.ID WHERE CON.AccID = 1

  3. 加入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