在同一表格中查找没有相似位置的条目

时间:2019-09-11 10:02:16

标签: sql oracle join

想象一下,我有一张快餐店的桌子(FASTFOOD)。它们每个都在列GEO_XGEO_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 JOINLEFT JOINRIGHT JOIN还是FULL OUTER JOIN,我的查询结果集都是相同的,因为所有条目的确都设置了地理坐标。

2 个答案:

答案 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的汉堡] 那只会让那些没有人的人留在附近