Я использую Esri ArcMap 10.0 с Microsoft Sql Server 2008 R2.
У меня есть 2 таблицы:
MN_SCHOOLS_PUBLIC
- поле идентификатора школы называется ORGID_RELTRPD_Schdgrps_Schools
- поле идентификатора школы называется School_Code
Первая таблица — это просто список школ с их адресами, вторая таблица — это список групповых бронирований, сделанных школами. Каждая школа в таблице 2 существует в таблице 1. Я пытаюсь создать запрос, в котором я генерирую список школ, которые сделали несколько бронирований. Вот что я придумал:
select School_Code
from central2.gisadmin.TRPD_SCHDGRPS_SCHOOLS
group by School_Code
having COUNT(*) > 1
Это помогло или, по крайней мере, достаточно близко. Однако моя проблема заключается в том, что я должен запустить этот запрос в программном обеспечении ГИС, инструмент запроса (Выбрать по атрибутам в Esri ArcMap) ВСЕГДА запускает оператор выбора для пользователя. Итак, когда вы открываете инструмент, запрос начинается с:
select * from gisadmin.MN_SCHOOLS_PUBLIC
Я хочу выбрать все школы в таблице 1, которые имеют несколько записей в таблице 2, и мне нужно начать с приведенного выше оператора выбора. Вот что я придумал, но я не могу понять, как заставить его работать:
select * from gisadmin.MN_SCHOOLS_PUBLIC
where EXISTS
(SELECT *
FROM central2.GISADMIN.TRPD_Schdgrps_Schools
WHERE central2.GISADMIN.MN_Schools_PUBLIC.ORGID_REL =
(select * from central2.gisadmin.TRPD_SCHDGRPS_SCHOOLS
where School_Code in
(select School_Code
from central2.gisadmin.TRPD_SCHDGRPS_SCHOOLS
group by School_Code
having COUNT(*) > 1)))
Любая помощь будет принята с благодарностью