Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

FROM ЗАПИСЬ В

Читайте также:
  1. FROM СТУДЕНТ. ЗАПИСЬ
  2. IX отдел (запись актов гражданского состояния).
  3. В субботу по предварительной записи. Запись в регистратуре № 3 или в справке.
  4. Дневник Метроэльфа: Запись в формуляре
  5. Дневниковая запись от 16 апреля
  6. Дневниковая запись от 18 апреля

WHERE А.НомерСтудента = В.НомерСтудента

AND А.НазваниеПредмета NOT = В.НазваниеПредмета)

В этом примере как основной, так и вложенный запросы относятся к таблице ЗАПИСЬ. Во избежание неоднозначности этим двум вариантам использования таблицы ЗАПИСЬ присвоены различные имена. В первом операторе FROM таблице ЗАПИСЬ присвоено временное произвольное имя А, а во втором операторе FROM — другое временное произвольное имя В.

Выражение во вложенном запросе означает следующее: следует найти две строки в таблице ЗАПИСЬ, имеющие один и тот же номер студента, но различные названия предметов. (Это означает, что студент записан более чем на один пред­мет.) Если такие две строки существуют, то оператор EXISTS будет иметь логическое значение «истина»; в этом случае номер данного студента будет присутство­вать в ответе. В противном случае оператор EXISTS будет иметь логическое значение «ложь», и номер данного студента в результате фигурировать не будет.

Можно рассматривать этот запрос и по-другому: представим себе две отдель­ные и идентичные копии таблицы ЗАПИСЬ. Назовем одну из копий А, а другую В. Будем сравнивать каждую строку А с каждой строкой В. Сначала рассмотрим первую строку А и первую строку В. Поскольку эти две строки идентичны, то и номер студента, и название предмета в них совпадают, поэтому атрибут Номер-Студента из данной строки не попадет в ответ.

Теперь рассмотрим первую строку А и вторую строку В. Если номер студента один и тот же, а названия предметов различаются, данный номер студента будет отображен в результатах. В сущности, мы сравниваем первую строку таблицы ЗАПИСЬ со второй строкой этой же таблицы. В данных, представленных на рис. 9.2, ни номер студента, ни название предмета не совпадают.

Далее мы продолжаем сравнивать первую строку А с каждой строкой В, Если выполняются заданные нами условия, мы выводим номер студента. Когда будут пройдены все строки таблицы В, мы перейдем ко второй строке таблицы А и будем сравнивать ее с каждой строкой таблицы В (на самом деле, когда мы рассматри­ваем п-ю строку таблицы А, то в таблице В необходимо рассмотреть только стро­ки, номера которых больше п).

Результатом этого запроса будет:

Чтобы продемонстрировать использование ключевого слова NOT EXISTS, пред­положим, что мы хотим узнать имена студентов, которые записаны на все пред­меты (Операция ДЕЛЕНИЯ рел. Алгебры). По-другому это можно выразить так: нам нужны имена таких студентов, для которых не существует предметов, на которые они не были бы записаны. Это делается с помощью следующего запроса:


Дата добавления: 2015-07-08; просмотров: 217 | Нарушение авторских прав


Читайте в этой же книге: Первая нормальная форма (1 НФ) (из Коннолли) | Вторая нормальная форма (2НФ) | ПРИМЕР НОРМАЛИЗАЦИИ | Некоторые комментарии к декомпозиционному алгоритму проектирования | Транзитивные зависимости | Правила вывода | Задачи к текущему материалу | Нормальная форма Бойса—Кодда (НФБК) с примером аномалий для 3 формы | ЯЗЫК SQL | FROM СТУДЕНТ |
<== предыдущая страница | следующая страница ==>
FROM СТУДЕНТ. ЗАПИСЬ| SELECT СТУДЕНТ.Имя

mybiblioteka.su - 2015-2024 год. (0.005 сек.)