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

10. Даны отношения, моделирующие производство деталей:

R1

Шифр изделия

Наименование

Материал

Производитель

R2

Шифр изделия

Количество

Поставщик

Заказчик

R3

Фирма

Страна

  1. Изделия, которые производятся только на экспорт (т.е. заказчик в другой стране).

SELECT distinct R1.Name FROM R1, R2, R3 AS a, R3 AS b WHERE R1.Shifr=R2.Shifr and R2.Post=R1.Proizv and a.Firm=R2.Post and b.Firm=R2.Zak and a.Str<>b.Str and (a.Str in(SELECT R3.Str FROM R2, R3 WHERE R3.Firm=R2.Post)) and (b.Str in(Select R3.Str FROM R2,R3 WHERE R3.Firm=R2.Zak)) and (Name not in(SELECT R1.Name FROM R1,R2,R3 as a,r3 as b WHERE R1.Shifr=R3.Shifr and R2.Post=R1.Proizv and a.Firm=R2.Post and b.Firm=R2.Zak and a.Str=b.Str and (a.Str in(SELECT R3.Str FROM R2,R3 WHERE R3.Firm=R2.Post)) and (b.Str in(Select R3.Str FROM R2,R3 WHERE R3.Firm=R2.Zak))))

  1. Производителей, которые не выпускают товаров на экспорт.

SELECT DISTINCT R1.Proizv FROM R1, R2, R3 AS a, R3 AS b WHERE R1.Shifr=R2.Shifr and R2.Post=R1.Proizv and a.Firm=R2.Post and b.Firm=R2.Zak and a.Str=b.Str and (a.Str in(SELECT R3.Str FROM R2, R3 WHERE R3.Firm=R2.Post)) and (b.Str in(SELECT R3.Str FROM R2, R3 WHERE R3.Firm=R2.Zak)) and (R1.Proizv not in(SELECT R1.Proizv From R1, R2, R3 as a, R3 as b WHERE R1.Shifr=R2.Shifr and R2.Post=R1.Proizv and a.Firm=R2.Post and b.Firm=R2.Zak and a.Str<>b.Str and (a.Str in(SELECT R3.Str FROM R2, R3 WHERE Firm=Post)) and (b.Str in(SELECT Str FROM R2,R3 WHERE Firm=Zak))))

  1. Изделия, которые используются как внутри страны, так и идут на экспорт.

SELECT distinct R1.Name FROM R1, R2, R3 AS a, R3 AS b WHERE R1.Shifr=R2.Shifr and R2.Post=R1.Proizv and a.Firm=R2.Post and b.Firm=R2.Zak and a.Str<>b.Str and (a.Str in(SELECT R3.Str FROM R2, R3 WHERE R3.Firm=R2.Post)) and (b.Str in(SELECT R3.str FROM R2, R3 WHERE R3.Firm=R2.Zak)) and (Name in(SELECT R1.Name FROM R1, R2, R3 as a, R3 as b WHERE R1.Shifr=R2.Shifr and R2.Post=R1.Proizv and a.Firm=R2.Post and b.Firm=R2.Zak and a.Str=b.Str and (a.Str in(SELECT R3.Str FROM R2, R3 WHERE R3.Firm=R2.Post)) and (b.Str in(SELECT R3.Str FROM R2, R3 WHERE R3.Firm=R2.Zak))))

  1. Материалы, которые используются в изделиях, идущих на экспорт.

SELECT R1.Mat FROM R1, R2, R3 AS a, R3 AS b WHERE R1.Shifr=R2.Shifr and R2.Post=R1.Proizv and a.Firm=R2.Post and b.Firm=R2.Zak and a.Str<>b.Str and (a.Str in(SELECT R3.Str FROM R2, R3 WHERE R3.Firm=R2.Post)) and (b.Str in(SELECT R3.Str FROM R2,R3 WHERE R3.Firm=R2.Zak))

  1. Поставщиков, которые работают только с одним заказчиком.

SELECT Post FROM R2 GROUP BY Post HAVING count(*)=1

11. Даны отношения, моделирующие обмен жилплощади:

R1

Адрес

Район

R2

ФИО

Старый адрес

Новый адрес

R3

ФИО

Адрес места работы

Название предприятия

  1. Людей, переехавших из одного района в другой.

SELECT DISTINCT R2.FIO FROM R2, R1 AS a, R1 AS b WHERE a.Raion<>b.Raion and R1.Old_Adr=a.Adr and R1.New_Adr=b.Adr;

  1. Людей, которые переехали в тот район, где они работают.

SELECT R2.FIO FROM R2, R1 as a, R1 as b, R3 WHERE R2.FIO=R3.FIO and a.Adr=R2.New_Adr and b.Adr=R3.Adr and a.Raion=b.Raion

  1. Людей, которые при переезде сохранили район проживания.

SELECT DISTINCT R1.FIO FROM R2, R1 AS a, R1 AS b WHERE a.Raion=b.Raion and R1.Old_Adr=a.Adr and R1.New_Adr=b.Adr;

  1. Людей, переезжавших несколько раз.

SELECT R1.FIO FROM R1 GROUP BY FIO HAVING COUNT(*)>1