SpatiaLiteデータベースエラー:そのようなテーブルはありませんが、SpatiaLiteデータベースに存在します

Aug 16 2020

私はQGISのデータベースに不慣れですが、1週間の必死の検索で、すべてのドキュメントとオンラインヘルプで答えを見つけることができません。これは初心者のエラーかもしれないと思いますが、この問題を解決することはできません。

SQL式(画像を添付)を使用して、2つのポイントシェープファイル[j_pipeline_inc(マルチポイント)からj_pipeline_midpts(ポイント)]の2つの属性テーブルを結合しようとしています。

SELECT j_pipeline_midpts.*, j_pipeline_inc.*
FROM j_pipeline_midpts
INNER JOIN j_pipeline_midpts
on j_pipeline_midpts.LSD = j_pipeline_inc.LOCATION and j_pipeline_midpts.Licence_No=j_pipeline_inc.LICENCE_NO

結合は、2つのキー(LSDと場所、Licence_NoとLICENCE_NO)に基づいて行われます。これらの2つのポイントシェープファイルを含むSpatiaLiteデータベース(incident_move.sqlite)を作成しましたが、式を実行すると、「そのようなテーブルはありません:j_pipeline_inc」と表示されます。なぜファイルの1つを認識しないのかわかりません。式ボックスに名前を入力すると、オートコンプリートに両方のシェープファイル名が表示されます。

1つのファイルをSpatiaLiteファイルタイプとして保存してから、もう1つのファイルをそのデータベースにインポートしようとしましたが、それでも同じエラーが発生します。

また、両方とも同じ射影を持っています(EPSG:3400-NAD83)。

回答

1 Zoltan Aug 17 2020 at 06:53

テーブル名の単純な間違いです。INNER JOINの後で、テーブル名をj_pipeline_incに変更します。これを試して:

SELECT j_pipeline_midpts.*, j_pipeline_inc.*
FROM j_pipeline_midpts
INNER JOIN j_pipeline_inc
on j_pipeline_midpts.LSD = j_pipeline_inc.LOCATION and
j_pipeline_midpts.Licence_No=j_pipeline_inc.LICENCE_NO