Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
интернет отвт.doc
Скачиваний:
8
Добавлен:
27.10.2018
Размер:
300.03 Кб
Скачать

9.10. Запросы к нескольким отношениям9.10.1. Декартово произведение и соединение в sql

Пусть необходимо определить имя продюсера кинофильма "Star Wars". Чтобы получить результат, необходимо воспользоваться двумя следующими отношениями из "кинематографической" базы данных:

Movie(title, year, length. inColor, studioName, producerC#)

MovieExec(name, address, cert#, netWorth)

Запрос формулируется следующим образом:

SELECT name

FROM Movie, MovieExec

WНERE title = 'Star Wars' AND producerC# = cert#;

При необходимости соединения нескольких кортежей одного и того же отношения R отношение может быть упомянуто в предложении FROM столько раз, сколько необходимо, но "копии" отношения R в предложении FROM снабжаются уникальным псевдонимом (alias) отношения, или переменной кортежа (tuple variable). Имя и псевдоним отношения в предложении FROM разделяются (необязательным) служебным словом AS.

Если отношению поставлен в соответствие псевдоним, он может быть использован вместо имени отношения во всех случаях - например, для ссылки на (одноименные) атрибуты в предложениях SELECT и WНERE.

Пусть необходимо информации о двух актерах, проживающих по одному адресу. Структура запроса сохраняется, но теперь нам предстоит соединить два кортежа одного и того же отношения MovieStar. Создадим псевдонимы для двух копий отношения MovieStar и запишем текст запроса следующим образом:

SELECT Starl.name, Star2.narne

FROM MovieStar Starl, MovieStar Star2

WНERE Starl.address = Star2.address

AND Starl.name < Star2.name;

Дисциплина “Обработка информации баз данных и знаний” Лекция 10. Sql язык структурированных запросов

Учебные вопросы

10.1. Запросы к нескольким отношениям

10.1.1. Декартово произведение и соединение в SQL

10.1.2. Объединение, пересечение и разность запросов

10.2. Подзапросы

10.2.1. Подзапросы для вычисления скалярных значений

10.2.2. Условия уровня отношения

10.2.3. Условия уровня кортежа

10.2.4. Коррелированные подзапросы

10.2.5. Подзапросы в предложениях FROM

      1. Выражения соединения в SQL

10.1. Запросы к нескольким отношениям10.1.1. Декартово произведение и соединение в SQL

Задание 1. Определить имя продюсера кинофильма "Star Wars". Чтобы получить результат, необходимо воспользоваться двумя следующими отношениями из "кинематографической" базы данных:

Movie (title, year, length. inColor, studioName, producerC#)

MovieExec (name, address, cert#, netWorth)

Запрос формулируется следующим образом:

SELECT name

FROM Movie, MovieExec

WНERE title = 'Star Wars'

AND producerC# =cert#;

При необходимости соединения нескольких кортежей одного и того же отношения R отношение может быть упомянуто в предложении FROM столько раз, сколько необходимо, но "копии" отношения R в предложении FROM снабжаются уникальным псевдонимом (alias) отношения, или переменной кортежа (tuple variable). Имя и псевдоним отношения в предложении FROM разделяются (необязательным) служебным словом AS. Если отношению поставлен в соответствие псевдоним, он может быть использован вместо имени отношения во всех случаях - например, для ссылки на (одноименные) атрибуты в предложениях SELECT и WНERE.

Задание 2. Найти информацию о двух актерах, проживающих по одному адресу. Структура запроса сохраняется, но теперь нам предстоит соединить два кортежа одного и того же отношения MovieStar. Создадим псевдонимы для двух копий отношения MovieStar и запишем текст запроса следующим образом:

SELECT Star1.name, Star2.name

FROM MovieStar Star1, MovieStar Star2

WНERE Star1.address = Star2.address

AND Star1.name < Star2.name;