Delphi | Сети | ПК | Маршрутизаторы | Моделирование | Протоколы | Экспертные системы |
Художественные возможности материалов
Удаленный доступ | Доменные имена развития компьютерной графики
Аплеты | SQL | Надежность | Задачи | Информационные процессы | Очередь JAVA | Отказы изделия | Расчет надежности показателей | Инфсис

Основные понятия и способы применения SQL - в примерах и задачах

SQL язык запросов к реляционным базам данных Учебник

Устранение дублирования в UNION

В отличие от обычных запросов UNION автоматически исклю­чает из выходных данных дубликаты строк, например, в запросе

SELECT CITY

FROM STUDENT UNION

SELECT CITY

FROM LECTURER;

совпадающие наименования городов будут исключены.


Если все же необходимо в каждом запросе вывести все стро­ки независимо от того, имеются ли такие же строки в других объ­единяемых запросах, то следует использовать во множественном запросе конструкцию с оператором UNION ALL. Так, в запросе

SELECT CITY

FROM STUDENT UNION ALL

SELECT CITY

FROM LECTURER;

дубликаты значений городов, выводимые второй частью запро­са, не будут исключаться.

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

SELECT 'МЭКСОЦ', A.STUDENT_ID, SURNAME, MARK, EXAM_DATE FROM STUDENT A, EXAM_MARKS В WHERE (A.STUDENT_ID = B.STUDENT_ID AND B.MARK  =

(SELECT MAX (MARK) FROM EXAM_MARKS С

WHERE C.EXAM_DATE = B.EXAM_DATE) ) UNION ALL

SELECT 'МИНОЦ1, A.STUDENT_ID, SURNAME, MARK, EXAM_DATE FROM STUDENT A, EXAM_MARKS В

WHERE (A.STUDENT_ID = B.STUDENT_ID \

AND B.MARK =

(SELECT MIN(MARK) FROM EXAM_MARKS С WHERE C.EXAM_DATE =  В.EXAM_DATE) ) ;

Для отличия строк, выводимых первой и второй частями за­проса, в них вставлены текстовые константы 'Макс оц' и 'Мин оц'.

В приведенном запросе агрегирующие функции использу­ются в подзапросах. Это является нерациональным с точки зре­ния времени, затрачиваемого на выполнение запроса (см. раз­дел 2.9). Более эффективна форма запроса, возвращающего ана­логичный результат:

SEIECT 'МаКСОЦ' , A. STUDENT_ID, SURNAME, E.MARK, E . EXAM_DATE FROM STUDENT A,

(SELECT B. STUDENT_ID, B.MARK, B . EXAM_DATE FROM EXAM_MARKS  B,

(SELECT MAX (MARK) AS MAX_MARK, C. EXAM_DATE

FROM EXAM__MARKS С

GROUP BY C.EXAM_DATE) D

WHERE В.EXAM_DATE=D.EXAM_DATE

AND B.MARK=MAX_MARK) E WHERE A . STUDENT_ID=E . STUDENT_ID UNION ALL

SEMCT 'МИНОЦ' , A. STUDENT ID, SURNAME, E .MARK, E . EXAM_DATE

FROM STUDENT A,

(SELECT B.STUDENT_ID, B.MARK, B.EXAM_DATE FROM EXAM_MARKS  B,

(SELECT MIN(MARK) AS MIN_MARK, C.EXAM_DATE

FROM EXAM_MARKS С GROUP BY C.EXAM_DATE) D WHERE B.EXAM_DATE=D.EXAM_DATE AND B.MARK=MIN_MARK) E WHERE A.STUDENT_ID=E.STUDENT_ID

 

Maya 3D графика в кино и телевидении Воздействие испытаний ядерного оружия на здоровье населения Объектно-ориентированный язык программирования Java Объектно-ориентированное программирование Delphi Библиотека визуальных компонентов VCL и ее базовые классы Кроссплатформенное программирование для Linux Элементы управления Win32 Элементы управления Windows XP Файлы и устройства ввода/вывода Что такое экспертная система? Объектно-ориентированное программирование Инструментальные средства разработки экспертных систем Программирование на языке CLIPS Критерии и количественные характеристики надежности Расчет характеристик надежности невостанавливаемых резервированных изделий Расчет надежности системы с постоянным резервированием Интегрирование тригонометрических функций ;