Выбрать поставщиков из казани, которые не заключали договоров позже 01. 01. 2002
Выбрать поставщиков из Казани, которые не заключали договоров позже 01.01.2002
На языке реляционного исчисления кортежей этот запрос может быть сформулирован следующим образом:
НАЙТИ{(ps.KPst)/psÎPsts}:
(ps.AdrPst=’КАЗАНЬ’ & ("doÎDog)( (( ps.KPst=do.KPst)& (DtN>’01.01.2002’))))
Или
НАЙТИ{(ps.KPst)/psÎPsts}:
(ps.AdrPst=’КАЗАНЬ’ & ( $doÎDog)(( ps.KPst=do.KPst)& (DtN>’01.01.2002’)))
На языке SQL этот запрос выглядит следующим образом:
SELECT Psts.KPst FROM Psts
WHERE (Psts.AdrPst=’КАЗАНЬ’) AND
NOT EXISTS(SELECT * FROM Dog WHERE (Psts.KPst=Dog.KPst) AND (Dog.Dtn>’01.01.2002’));
Другой вариант выполнения запроса включает определение последовательности шагов вычисления заданной формулы с последующей реализацией каждого шага. Один из возможных вариантов заключается в отдельном выполнении формул и с дальнейшим вычислением разности . Для хранения промежуточных результатов запроса можно использовать представления.
Реализация запроса, задаваемого формулой (операция выборки и проекции):
CREATE VIEW W1 (KPst) AS
SELECT KPst FROM Psts
WHERE AdrPst=’КАЗАНЬ’
Реализация запроса, задаваемого формулой (операция выборки и проекции):
CREATE VIEW W2 (KPst) AS
SELECT Distinct KPst FROM Dog
WHERE DtN>’01.01.2002’
Реализация разности (sÎA & Ø$tÎB a.KPst=b.sPst):
|