0

我有 2 张桌子的设置,这很奇怪。

表A:它有多个列,但基本上是信息的集合。说:

------------------------------------
my_id| name | address | lat | long 

表 B 是表 A 的元素之间的关系的长列表: 例如:

------------------
my_id | parent_id

我想要做的是以下内容:

对于任何 A.my_id,获取将 A.my_id 作为 B.parent_id 的 B.my_id 的列表(也有没有人的情况),然后:

获取,对于这个列表中的每个元素(我们刚刚得到),从表 A 中获取这些 id 的纬度和经度,并从中创建一个 2 数组。

谁能指出我正确的方向?我对 SQL 相当陌生,虽然我到现在为止都在管理,这真的让我感到困惑。

谢谢!

4

1 回答 1

0
SELECT results.lat, results.long 
FROM a 
JOIN b 
    ON b.parent_id=a.my_id 
JOIN a AS results 
    ON results.my_id=b.my_id
WHERE a.my_id = 'the one I'm looking for'

忽略选定的列一分钟,查询将为您提供表 A 中与您正在查找的特定 ID 匹配的行(请参阅 where 子句),并与 B 中与您的 ID 具有相同父 ID 的行连接重新寻找,再次与表 A 连接,这次其 ID 与 B 中的 ID 匹配。

如果您的表格如下所示:

TABLE A
my_id| name | address | lat | long
  1    ABC    1234      10     20
  2    DEF    5678      15     19
  3    GHI    9101      17     21
  4    JKL    1121      18     18
 ...

TABLE B
my_id|parent_id
  1      4
  3      4
 ...

如果您执行此查询:

SELECT *
FROM a 
JOIN b 
    ON b.parent_id=a.my_id 
JOIN a AS results 
    ON results.my_id=b.my_id
WHERE a.my_id = 4

你应该得到这些结果:

a.my_id | a.name | a.address | a.lat | a.long | b.my_id | b.parent_id | results.my_id | results.name | results.address | results.lat | results.long
   4       JKL       1121       18       18        1          4             1             ABC                   1234           10             20
   4       JKL       1121       18       18        3          4             3             GHI                   9101           17             21

从那里我们只需更改 中的列SELECT以影响结果的外观。

这里的诀窍是在JOIN.

于 2013-01-23T01:46:00.557 回答