|
Программирование >> Формирование связанных подзапросов
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));
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |