Ошибка базы данных SpatiaLite: такой таблицы нет, но она присутствует в базе данных SpatiaLite

Aug 16 2020

Я новичок в базах данных QGIS, но не могу найти ответа во всей документации и онлайн-справке за несколько недель отчаянных поисков. Я думаю, это может быть ошибка новичка, но просто не может решить эту проблему.

Я пытаюсь объединить две таблицы атрибутов из двух точечных шейп-файлов [j_pipeline_inc (multipoint) в j_pipeline_midpts (point)], используя выражение SQL (изображение прилагается):

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

Присоединение будет основано на двух ключах (LSD & Location, Licence_No и LICENCE_NO). Я создал базу данных SpatiaLite (Incident_move.sqlite), в которой есть эти два точечных шейп-файла, но когда я выполняю свое выражение, в нем говорится: «нет такой таблицы: j_pipeline_inc». Я не понимаю, почему он не распознает один из файлов. Когда я ввожу их имена в поле выражения, оба имени шейп-файлов отображаются в автозаполнении.

Я попытался сохранить один файл как тип файла SpatiaLite, а затем импортировать другой в эту базу данных, но он по-прежнему дает мне ту же ошибку.

Кроме того, у них обоих одинаковая проекция (EPSG: 3400 - NAD83).

Ответы

1 Zoltan Aug 17 2020 at 06:53

Это простая ошибка в названии таблицы. Измените имя таблицы на j_pipeline_inc после INNER JOIN. Попробуй это:

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