Sql 查找同一表中没有相似位置的条目
假设我有一桌快餐店(Sql 查找同一表中没有相似位置的条目,sql,oracle,join,Sql,Oracle,Join,假设我有一桌快餐店(快餐店)。它们中的每一个都在列geo_X和geo_Y中设置了地理坐标,以及列特许经营权。特许经营权可以是麦当劳或汉堡王 我想选择所有在特定距离内没有麦当劳的汉堡王,以地理坐标度测量 我该怎么做 我可以列出在一定距离内有麦当劳的汉堡王: 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
快餐店
)。它们中的每一个都在列geo_X
和geo_Y
中设置了地理坐标,以及列特许经营权
。特许经营权可以是麦当劳或汉堡王
我想选择所有在特定距离内没有麦当劳的汉堡王,以地理坐标度测量
我该怎么做
我可以列出在一定距离内有麦当劳的汉堡王:
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';
选择t.*
来自快餐店
内联快餐s ON(ABS(t.geo_x-s.geo_x)<0.01和ABS(t.geo_y-s.geo_y)<0.01)
其中t.特许经营=‘汉堡王’
和s.Francision=‘麦当劳’;
但我不知道如何找到“反面”
无论我使用的是
内部联接
、左联接
、右联接
、还是完全外部联接
,我的查询结果集都是相同的,因为所有条目都设置了地理坐标。尝试此操作
--下面提到的“geo_z”是两个特许经营权之间的指定距离
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'
我能列出在一定距离内有麦当劳的汉堡王
使用
[所有汉堡王]除了[附近有麦当劳的汉堡王]
那应该只剩下那些附近没有一个的什么是“地理”坐标的定义?这是纬度/经度,平面二维网格上的点,还是其他?我相信我误解了您表中的数据,但是您能将t.geo_x-s.geo_x和t.geo_y-s.geo_y的-更改为a+?同样,我认为我误解了表中的数据,但对我来说,这将与所显示的函数相反