Вставить счетную выписку в список выбора - PullRequest
1 голос
/ 30 ноября 2011

Я использую Esri ArcMap 10.0 с Microsoft Sql Server 2008 R2

У меня есть 2 таблицы:

  1. MN_SCHOOLS_PUBLIC - поле школьного идентификатора называется ORGID_REL
  2. TRPD_Schdgrps_Schools - поле школьного идентификатора называется School_Code

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

select School_Code
from central2.gisadmin.TRPD_SCHDGRPS_SCHOOLS
group by School_Code
having COUNT(*) > 1

Это помогло или, по крайней мере, достаточно близко.Однако моя проблема заключается в том, что мне нужно выполнить этот запрос в ГИС-программном средстве, инструмент запросов (Выбрать по атрибутам в ArcMap от Esri) ВСЕГДА запускает оператор выбора для пользователя.Поэтому, когда вы открываете инструмент, запрос начинается с:

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)))

Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 30 ноября 2011

Попробуйте это:

SELECT * FROM gisadmin.MN_SCHOOLS_PUBLIC msp
WHERE msp.School_Code IN
(
    SELECT tss.School_Code
    FROM central2.gisadmin.TRPD_SCHDGRPS_SCHOOLS tss
    GROUP BY tss.School_Code
    HAVING COUNT(*) > 1
)
...