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

51. Даны отношения:

R1

Фондовый магазин

Акция

Цена продажи

R2

Акция

Номинал

  1. Фондовые магазины, продающие все акции, указанные в R2.

SELECT DISTINCT Mag FROM R1 GROUP BY Mag HAVING Count(*) = (SELECT Count(DISTINCT Act) FROM R2)

  1. Фондовые магазины, которые не продают какие-либо акции по номинальной цене.

SELECT DISTINCT R1.Mag FROM R1, R2 WHERE R1.Act = R2.Act and R2.Nom <> R1.Cash

  1. Акции, которые продаются только одним фондовым магазином.

SELECT R2.Act FROM R2 WHERE R2.Act in (SELECT Act FROM R1 GROUP BY Act HAVING (Count(Mag) = 1))

  1. Акции, которые продаются по ценам как ниже, так и выше номинала.

SELECT DISTINCT a.Act FROM R1 as a, R2 as b WHERE a.Act = b.Act and a.Nom > b.Cash and EXISTS(SELECT DISTINCT R2.Act FROM R1, R2 WHERE R1.Act = R2.Act and R2.Nom < R1.Cash and R1.Act = a.Act)

  1. Фондовые магазины, которые продают уникальные акции, отсутствующие в других магазинах.

SELECT DISTINCT Mag FROM (SELECT Act, Mag FROM R1 GROUP BY Act, Mag HAVING Count(*)=1) as R3

52. Даны отношения:

R1

Шифр детали

Шифр заготовки

Материал

R2 R3

Шифр детали

Цех

Цех

Район

R4

Материал

Склад

  1. Детали, которые являются сборочными единицами (т.е. состоят из нескольких заготовок).

SELECT DISTINCT Detal FROM (SELECT Detal, Zag FROM R1 GROUP BY Detal, Zag HAVING Count(Zag) > 1)

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

SELECT DISTINCT Detal FROM (SELECT DISTINCT R1.Detal, R3.Raion FROM R1, R2, R3 WHERE R1.Detal = R2.Detal and R2.Ceh = R3.Ceh GROUP BY R1.Detal, R3.Raion HAVING Count(R3.Raion) > 1) as R5

  1. Детали, которые изготавливаются только в одном цехе.

SELECT Detal FROM (SELECT Detal, Ceh FROM R2 GROUP BY Detal, Ceh HAVING Count(*) = 1) as R5

  1. Детали, которые в данный момент можно запускать в производство (т.е. для которых есть на складе материал).

SELECt DISTINCT Detal FROM (SELECT DISTINCT Detal, Mat FROM R1 WHERE Mat not in(SELECT DISTINCT Mat FROM R1 as R5 WHERE NOT EXISTS(SELECT top 1 * FROM R4 WHERE Mat = R5.Mat))) as R6