Использование ключевых слов ALL и ANY с вложенными запросами

Конструкции ALL(SELECT …) и ANY(SELECT…) применяются к вложенным запросам, возвращающим множество строк, употребляются, как правило, во фразах WHERE и HAVING, и означают буквально следующее:

all (Select…) – все строки вложенного SELECT

any (Select…) – хотя бы одна из строк вложенного SELECT

В некоторых случаях употребление этих слов позволяет сформулировать запрос просто и точно.

Проиллюстрируем это на примере. Пусть требуется вывести студентов, у которых все оценки – только четверки (никаких других оценок нет). Использование ключевого слова ALL позволяет решить эту задачу «в лоб»:

select cod_st,name_st from students

where 4=all(select mark from marks where cod_st=students.cod_st)

Если же требуется найти студентов, у которых имеется хотя бы одна четверка, можно прибегнуть к помощи ключевого слова ANY:

select cod_st,name_st from students

where 4=aNY(select mark from marks where cod_st=students.cod_st)

К сожалению, в данных примерах получились кореллированные вложенные запросы, так что прозрачность формулировок запроса идет в ущерб производительности.

Можно привести примеры более эффективных запросов, решающих те же самые задачи.

Например, чтобы найти студентов, у которых все оценки – четверки, достаточно сообразить, что у таких студентов и минимальная, и максимальная оценки равны 4:

select st.cod_st, st.name_st from students st, marks m

where st.cod_st= m.cod_st

group by m.cod_st

having min(m.marks)=4 and max(m.marks)=4

А найти студентов, у которых есть хотя бы одна четверка, можно, например, таким запросом:

select DISTINCT st.cod_st, st.name_st from students st, marks m

where st.cod_st= m.cod_st AND m.mark=4








Дата добавления: 2015-08-26; просмотров: 1085;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.