我有2个表的设置,这是相当好奇的。
表A: 它有多个列,但基本上是一组信息。 说:
------------------------------------
my_id| name | address | lat | long
表B是表A的元素之间的关系列表的长列表: 例如:
------------------
my_id | parent_id
我想做的是以下内容:
对于任何A.my_id,获取B.my_id的列表,其中A.my_id为B.parent_id(也存在没有人的情况)然后:
获取此列表中的每个元素(我们刚刚获得),来自表A的lats和long用于这些id并从中创建一个2数组。
有人能指出我正确的方向吗?我对SQL很陌生,虽然我现在已经设法了,但这真让我感到困惑。
谢谢!
答案 0 :(得分: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
中的两个地方使用相同的表格(A)。