У меня есть Таблица A и Таблица B, которые представляют собой два шейп-файла, которые я импортировал в Geopackage, а затем соединил с помощью DB Manager в QGIS, чтобы получить вывод, показывающий, где изменились имя, длина кабеля или геометрия, с помощью следующего кода
Select a.name, A.cable_leng, a.geom, a.fid
, case when a.name <> B.name and
a.cable_leng <> B.cable_leng
then 'Cable Name and Length modified'
when a.name <> B.name then 'Name'
when a.cable_leng <> B.cable_leng then 'Cable Length Modified'
when b.name is null then 'Deleted Cable'
end Cables
, case when a.geom <> B.geom then 'Geometry Modified'
when a.geom = B.geom then 'No Geometry Changes'
end Geometry
from table_1 a
inner join table_2 b
on a.fid = b.fid
Я получаю следующий вывод на связанном изображении. Я доволен Вывод SQL
Пример данных Пример данных
Но я хотел бы знать, какие изменения я могу внести в свой запрос, чтобы показать, когда число строк между двумя таблицами может быть разным, дополнительным или отсутствующим. Из проведенного мною исследования мне может потребоваться сделать правильное соединение, но в настоящее время это невозможно с QGIS DB Manager, но затем я рассмотрел случай, когда в Таблице B может быть меньше строк. Поэтому я бы хотел показать, гдеесть значения NULL в любой Таблице только из левого соединения или я должен использовать другой тип запроса?
Как примечание, есть ли способ показать данные из Таблицы A и Таблицы B в выходных данных. Насколько я понимаю, нет способа упорядочить отображение столбцов в выходных данных, но было бы неплохо хотя бы увидеть значения, которые отличаются в одной таблице, даже если их нельзя упорядочить.
Редактировать: глядя на мой запрос еще раз, эта строка, вероятно, ничего не делает с левым соединением?
when b.name is null then 'Deleted Cable'