国境を含むテーブルと機能(ケーブルなど)を含むテーブルが2つあり、その国がどこにあるかを知りたいと思います。条件をSDO_CONTAINS/SDO_RELATEと組み合わせることができません
だから私は、次のクエリを使用します。
select cc.country_code, ca.*
from CABLES ca, COUNTRIES cc
where sdo_contains(cc.geometry, ca.geometry) = 'TRUE'
これは動作します:私は、各ケーブル国コードのために明確なリストを取得します。
今私はオランダで横たわっているすべてのケーブルを選択したいので、私のような何か書く:
select cc.country_code, ca.*
from CABLES ca, COUNTRIES cc
where sdo_contains(cc.geometry, ca.geometry) = 'TRUE'
and cc.country_code = 'NL'
を、突然、私はno rows selected
を取得しますか?
サブクエリ、with-clause、sdo_relateを使用していて、すべて同じ効果があります:選択された行がありません。私はビューを使ってみましたが、内部的にサブクエリを書くのと同じ効果があると思います。
SDO_ANYINTERACT
を使用している場合は、条件country_code = 'NL'
を追加して結果を得ることができますが、私には同じ結果(明らかに?)はありません。
次のようにビューを定義する奇妙なこと:
create or replace view cables_with_country as
select cc.country_code, ca.*
from cables ca, countries cc
where (sdo_contains(cc.geometry, ca.geometry) = 'TRUE')
、その後select count(*) from cables_with_country
リターン0をやって???
マテリアライズド・ビュー使用され、これまで取り組んできました唯一の解決策:私はこの奇妙な行動とどのように私は最高のこのに取り組むことができを参照してください理由
create materialized view cables_with_country_mv as
select cc.country_code, ca.*
from cables ca, countries cc
where (sdo_contains(cc.geometry, ca.geometry) = 'TRUE')
は誰も説明できますか?マテリアライズド・ビューを使用すると、最高でもハック感があります。
最初のクエリの結果に「NL」の国コードが含まれていますか? – micklesh
私の最初のクエリは、国コードとして 'NL'を含む723行を返します。多分それは十分ではなかったかもしれませんが、最初にマテリアライズド・ビューに問合せを変換すると、正しく動作し、動作します。サブクエリや余分な条件も同様に機能すると思いますが、私はそれほど困惑しています。 – nathanvda