问题描述
我尝试查询彼此相距130公里以内的所有物品。 如果我在where部分使用存在,则会出现异常:
这很好:
select *
from tbl_geometry g1,tbl_geometry g2
where sdo_within_distance(g1.GEOMETRY,g2.GEOMETRY,'distance=130 unit=km')='TRUE'
and g1.id <> g2.id;
在这里我得到一个例外:
select *
from tbl_geometry g1
where exists(
select *
from tbl_geometry g3
where g1.id <> g3.id
and sdo_within_distance(g1.GEOMETRY,g3.GEOMETRY,'distance=130 unit=km') = 'TRUE'
);
错误: [72000] [13226] ORA-13226:没有空间索引时不支持接口ORA-06512:在“ MDSYS.MD”行1723 ORA-06512:在“ MDSYS.MDERR”行8在ORA-06512:在“ MDSYS .SDO_3GL”,第1052行
添加另一个tbl_geometry实例可以“解决”问题:
select *
from tbl_geometry g1
where exists(
select *
from tbl_geometry g2,tbl_geometry g3
where g2.id = g1.id
and g2.id <> g3.id
and sdo_within_distance(g2.GEOMETRY,'distance=130 unit=km') = 'TRUE'
);
任何想法我都可以在没有理由的情况下不使用2 tbl_geometry来使用存在的东西。
谢谢。
解决方法
想看一些魔术吗?
您的查询:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<div class="box">
<a href="https://cdn.pixabay.com/photo/2014/08/21/14/51/pet-423398__180.jpg" class="image">
<img src="https://cdn.pixabay.com/photo/2014/08/21/14/51/pet-423398__180.jpg" alt="image">
</a>
<div class="con-text"> // Magnific popup doesn't work anymore when I add this div
<h2>Title</h2>
</div>
</div>
</div>
我的查询:
SQL> SELECT COUNT(*)
2 FROM tbl_geometry g1
3 WHERE EXISTS
4 (SELECT *
5 FROM tbl_geometry g3
6 WHERE g1.id <> g3.id
7 AND sdo_within_distance (g1.geometry,8 g3.geometry,9 'distance=130 unit=km') = 'TRUE');
SELECT COUNT(*)
*
ERROR at line 1:
ORA-13226: interface not supported without a spatial index
ORA-06512: at "MDSYS.MD",line 1723
ORA-06512: at "MDSYS.MDERR",line 8
ORA-06512: at "MDSYS.SDO_3GL",line 1082
您能发现差异吗?没有?在这里:
SQL> SELECT COUNT(*)
2 FROM tbl_geometry g1
3 WHERE EXISTS
4 (SELECT *
5 FROM tbl_geometry g3
6 WHERE g1.id <> g3.id
7 AND sdo_within_distance (g3.geometry,8 g1.geometry,9 'distance=130 unit=km') = 'TRUE');
COUNT(*)
----------
815
SQL>
vs。
7 AND sdo_within_distance (g1.geometry,--> g1
8 g3.geometry,--> g3
9 'distance=130 unit=km') = 'TRUE');
为什么?我不知道。但这有效。