2016-11-16 4 views
1

У меня есть таблицы для хранения информации о озерах, уездах и штатах. У меня также есть таблица под названием LakeLocation, которая представляет собой пару внешних ключей объекта LakeID и CountyID, поэтому я могу знать, где они находятся. И каждый граф имеет в нем имя StateName.Запрос, чтобы найти озера, которые находятся во многих штатах

Вид на высоком уровне все это что-то вроде этого:

Lake = {id,name,...}

County = {id, name, StateName ....}

State = {name, ...}

LakeLocation = {LakeID, CountyID}

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

Как я могу спроектировать запрос, который делает то, что мне нужно? Благодаря

+0

Выборочные данные были бы очень полезны. – CGritton

ответ

2

Вам нужно всего лишь group by знать, какие озера

SELECT LakeID 
    FROM LakeLocation 
    GROUP BY LakeID 
    HAVING COUNT(CountyID) > 1 

Тогда, если вы хотите названия озера

SELECT * 
    FROM Lake 
    WHERE LakeID IN (<previous query>) 
+0

Спасибо за ваш ответ, он решил мою проблему. Моя фактическая проблема была более сложной, и эта часть была самой большой проблемой, я не хотел все спрашивать, потому что я хочу понять это сам. –

Смежные вопросы