想象一下,我有一张快餐店的桌子(FASTFOOD
)。它们每个都在列GEO_X
和GEO_Y
以及列FRANCHISE
中设置了地理坐标。特许经营可能是MCDONALDS或BURGERKING。
我要选择所有在特定距离内没有麦当劳的汉堡王(以地理坐标度为单位)。
我该怎么做?
我能够列出在一定距离内确实具有麦当劳的汉堡王:
select t.*
from FASTFOOD t
INNER JOIN FASTFOOD s ON (ABS(t.geo_x - s.geo_x) < 0.01 AND ABS(t.geo_y - s.geo_y) < 0.01)
WHERE t.FRANCHISE= 'BURGERKING'
AND s.FRANCHISE = 'MCDONALDS';
但是我不知道如何找到“对面”。
无论我使用INNER JOIN
,LEFT JOIN
,RIGHT JOIN
还是FULL OUTER JOIN
,我的查询结果集都是相同的,因为所有条目的确都设置了地理坐标。
答案 0 :(得分:0)
尝试一下
-下文提到的“ geo_z”是两个FRANCHISE之间的指定距离
select *
from (
select t.*
from FASTFOOD t
inner join FASTFOOD s on t.PrimaryKey=s.PrimaryKey
where ABS(t.geo_x-t.geo_y) > geo_z
) d
where d.FRANCHISE='BURGERKING'
答案 1 :(得分:0)
我能够列出在一定距离内确实有麦当劳的汉堡王
使用 [所有汉堡]除了[附近有cd的汉堡] 那只会让那些没有人的人留在附近