Программирование >>  Формирование связанных подзапросов 

1 ... 7 8 9 [ 10 ] 11 12 13 ... 15


WHERE RATING = 401

AND STUDENT.UNIV ID = UNIVERSITY. UNIV ID);

Часть AND предиката внутреннего запроса сс1лается на таблицу STUDENT. Команда удаляет данные о студентах, которые учатся в университетах, имеющих рейтинг, равный 401. Существуют и другие способы решения этой задачи.

DELETE

FROM STUDENT WHERE 401 IN

(SECT RATING FROM UNIVERSITY

WHERE STUDENT. UNIV ID = UNIVERSITY. UNIV ID) ;

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

DELETE

FROM STUDENT

WHERE STUDENT ID IN

(SELECT STUDENT ID FROM EXAM MARKS A WHERE MARK=

(SELECT MIN(MARK) FROM EXAM MARKS В

WHERE A.EXAM DATE = В.EXAMJDATE)) ;

Так как столбец STUDENTID является первичным ключом, то удаляется единственная строка.

Если в какой-то день сдавался только один экзамен (то есть получена только одна минимальная оценка) и по какой-либо причине запись, в которой находится эта оценка, требуется оставить, то решение будет иметь вид:

DELETE

FROM STUDENT



Ъ2. Использование подзапросов в INSERT 85

WHERE STUDENT ID IN

(SELECT STUDENT ID FROM EXAM MARKS A WHERE MARK =

(LECT MIN(MARK) FROM EXAM MARKS В

WHERE A.EXAM DATE = B.EXAM DATE AND 1 < (SECT COONT(SUBJ ID)

FROM EXAM MARKS В

WHERE A.EXAM DATE = В.EX DATE))) ;

3.2.3. Использование подзапросов с UPDATE

С помощью команды UPDATE можно применять подзапросы в любой форме, приемлемой для команды DELETE.

Например, используя связанные подзапросы, можно увеличить значение размера стипендии на 20 в записях студентов, сдавших экзамены на 4 и 5.

UPDATE STUDENT1

SET STIPEND = STIPEND + 2 0

WHERE 4 <=

(ECT MIN(MARK) FROM EXAM MARKS

WHERE EXAM MARKS.STUDENT ID = STUDENT1.STUDENT ID);

Другой запрос: Уменьшить величину стипендии на 20 всем студентам, получившим на экзамене минимальную оценку .

UPDATE STUDENT1

SET STIPEND = STIPEND - 20

WHERE STUDENT ID IN

( STUDENT ID FROM EXAM MARKS A WHERE MARK =



Упражнения

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

2. Напишите команду, удаляющую из таблицы SUBJECTI сведения о предметах обучения, по которым студентами не получено ни одной оценки.

3. Напишите запрос, увеличивающий данные о величине стипендии на 20% всем студентам, у которых общая сумма баллов превышает значение 50.

(SECT MIN(MARK) FROM EXAM MARKS В

WHERE A.EXAM DATE = B.EXAM DATE));



1 ... 7 8 9 [ 10 ] 11 12 13 ... 15

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика