Базы данных | страница 40
Теперь, прежде чем мы приступим к составлению текста самого оператора, введем в рассмотрение две функции, которые нам пригодятся по мере нашей деятельности.
Во-первых, нам будет полезна функция Trim, записывается Trim («строка»), т. е. аргументом этой функции является строка. Что делает эта функция? Они возвращает сам аргумент без пробелов, стоящих в начале и в конце этой строки, т. е., эту функцию применяют, например, в случаях: Trim («Богучарников») или Trim («Максиме-енко»), когда после или до аргумента стоят по несколько лишних пробелов.
А во-вторых, необходимо также рассмотреть функцию Left, которая записывается Left (строка, число), т. е. функцию от уже двух аргументов, одним из которых является, как и раньше, строка. Второй ее аргумент – число, оно показывает, сколько символов из левой части строки следует вывести в результат.
Например, результатом операции:
Left («Михаил, 1») + «.» + Left («Зиновьевич, 1»)
будут инициалы «М. З.». Именно для выведения инициалов студентов мы и будем использовать эту функцию в нашем запросе.
Итак, приступим к составлению искомого запроса.
Для начала составим небольшой вспомогательный запрос, который потом используем в основном, главном запросе:
Select № зачетной книжки, Оценка
FromСессия
WhereКод предмета = (SelectКод предмета
FromПредметы
WhereИмя предмета = «Базы данных»)
as«Оценки „Базы данных“;
Применение здесь опции as означает, что мы присвоили этому запросу псевдоним «Оценки „Базы данных“. Сделали мы это для удобства дальнейшей работы с этим запросом.
Далее, в этом запросе подзапрос:
SelectКод предмета
FromПредметы
WhereИмя предмета = «Базы данных»;
позволяет выделить из отношения «Сессия» те кортежи, которые относятся к рассматриваемому предмету, т. е. к базам данных.
Интересно, что этот внутренний подзапрос может возвращать не более одного значения, так как атрибут «Имя предмета» является ключом отношения «Предметы», т. е. все его значения уникальны.
А весь запрос «Оценки „Базы данных“ позволяет выделить из отношения «Сессия» данные о тех студентах (их номера зачетных книжек и оценки), которые удовлетворяют условию, оговоренному в подзапросе, т. е. информацию о предмете под названием «База данных».
Теперь составим основной запрос, используя уже полученные результаты.
SelectСтуденты. № зачетной книжки,
Trim (Фамилия) + « » + Left (Имя, 1) + «.» + Left (Отчество, 1) + «.»asФИО, Оценки «Базы данных». Оценка
FromСтудентыinner join
(
Select №