2012-01-13 3 views
3

Итак, в ближайшие недели у меня есть экзамен по Базах данных, и, как обычно, я решил просмотреть прошлые документы, чтобы узнать, как может быть этот вопрос. Все прошло хорошо, пока я не наткнулся на этот вопрос.SQL-запрос экзамена

Написать SQL конструкцию для следующего запроса: Какие леса найдены в одной и той же географической области (fo_loc) и принадлежат одной и той же компании. Выход должен иметь следующую структуру: Larger Forest имя, меньшее имя леса и название компании. Старайтесь не печатать одинаковые пары имен лесов более одного раза.

Это схема отношение к вопросу:

ТАБЛИЦА: FOREST

Fo_name character(10) P.K. 
Fo_Size Integer 
Fo_loc Character(10) 
Fo_Comp Character(10)) 

С моим ограниченным знанием SQL я не думаю, что этот вопрос можно решить декларативно, так что я попробовал PL/SQL (или, скорее, plpgsql), и я все ближе и ближе подходил к решению, но вскоре мне стало ясно, что я использую много команд, которые мы не рассматривали в классе, не говоря уже о том, что решение далеко от того, что будет ожидать из 3-х вопросительного вопроса.

Итак, я решил написать здесь ... что это такое, что мне не хватает? Любая помощь будет принята с благодарностью.

Благодаря

ответ

9

Просто автообъединение должны работать:

SELECT a.Fo_Name as 'Larger', 
     b.Fo_Name as 'Smaller', 
     a.fo_Comp 
FROM Forest a 
INNER JOIN Forest b 
    ON a.fo_Comp= b.fo_Comp 
    AND a.fo_loc = b.fo_loc 
    AND a.fo_name <> b.fo_name 
WHERE a.fo_size > b.fo_size 
+0

быстрый ответ ... как всегда! – Taryn

+0

+1 Ударьте меня хорошими 2 минутами ... –

+0

Большое спасибо. Я действительно пробовал что-то подобное, но я тестировал условия после присоединения. Еще раз спасибо за помощь. – Marxley

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