Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по базам данных / Ответы на билеты 2002.doc
Скачиваний:
52
Добавлен:
02.05.2014
Размер:
86 Кб
Скачать

Билет №7

1.

Покупатель (код_покупателя, ФИО_покупателя)

Товар (код_товара, назв_товара)

Покупка (код_покупателя, код_товара, дата_покупки, время_покупки, кол_единиц_товара)

2.(я исправила)

Select Рецепт_Блюдо.ном_бл, Рецепт_Блюдо.назв_бл, Продукт.назв_прод, Рецепт_Блюдо.кол_прод_в_блюде

From (

Select Блюдо.ном_бл As ном_бл,

Блюдо.назв_бл As назв_бл,

Рецепт.кол_прод_в_блюде As кол_прод_в_блюде,

Рецепт.ном_прод As ном_прод

From Блюдо Left Join Рецепт On

Рецепт.ном_бл = Блюдо.ном_бл

) As Рецепт_Блюдо Left Join Продукт On

Продукт.ном_прод = Рецепт_Блюдо.ном_прод

Билет №8

1.

Товар (код_товара, назв_товара, срок_гарантии, цена, код_категории_товара)

Категория (код_категории_товара, назв_категории)

2.

Select Блюдо.ном_бл

From Блюдо

Where Блюдо.ном_бл Not In (

Select Блюдо.ном_бл

From Блюдо

Where ( Select Count(*) As прод_count

From Рецепт

Where Рецепт.ном_бл = Блюдо.ном_бл)>1)

Билет №9

1.

Покупатель (код_покупателя, ФИО_покупателя, стаж_покупателя, код_категории_покупателя+код_товара, дата_покупки)

Категория (код_категории_покупателя, назв_категории) или Покупка(код_покуп-ля,код_товара,дата_п)

2.

Select Рецепт_нов.ном_бл, Блюдо.назв_бл, сум_кол_прод_в_блюде, сум_калорийность

From (

Select Рецепт.ном_бл As ном_бл, sum (Рецепт.кол_прод_в_блюде * Продукт.калорийность) As Сум_калорийность,

Count{sum} (Рецепт.кол_прод_в_блюде) As сум_кол_прод_в_блюде

From Рецепт, Продукт

Where Продукт.ном_прод = Рецепт.ном_прод

Group By Рецепт.ном_бл) As Рецепт_нов,

Блюдо

Where Рецепт_нов.сум_калорийность <500

And Блюдо.ном_бл = Рецепт_нов.ном_бл

{sum, если считать поле кол_прод_в_блюде;

count, если считать поле ном_пр, т.е. сколько разных продуктов в блюде)

Билет №10 Задача 2

SELECT ном_бл, назв_бл

FROM блюдо xb

WHERE ном_бл IN (

SELECT ном_бл

FROM рецепт XР

WHERE кол_прод_в_блюде > 100

AND ном_пр IN (

SELECT ном_пр

FROM рецепт YР

WHERE ном_бл IN (

SELECT ном_бл

FROM блюдо Yb

WHERE назв_бл= "жюльен")));

Билет №11

Задача 2

SELECT ном_бл, назв_бл

FROM Блюдо

WHERE ном_бл IN (

SELECT ном_бл

FROM Рецепт

WHERE кол_прод_в_блюде > 100 AND

NOT EXISTS (

SELECT *

FROM Рецепт

WHERE ном_бл IN (

SELECT ном_бл

FROM Блюдо

WHERE назв_бл = 'Солянка') AND

ном_пр NOT IN (

SELECT ном_пр

FROM Рецепт

WHERE Блюдо.ном_бл = Рецепт.ном_бл)));

Билет №12

Задача 2(-)

SELECT product.kal, COUNT(distinct product.nom_prod) AS k_prod, COUNT (bludo.nom_bl)

AS k_bl

FROM product, bludo, recept

WHERE product.nom_prod=recept.nom_prod And bludo.nom_bl=recept.nom_bl

GROUP BY product.kal;

Иринина(-)

SELECT калорийность, count(ном_пр) AS к_прод, (select count(рецепт.ном_бл) from рецепт, продукт where рецепт.ном_пр=продукт.ном_пр AND продукт.калорийность=Р.калорийность) AS к_блюд

FROM продукт AS р

GROUP BY калорийность;

Билет №13

Задача 2

SELECT bludo.nazv_bl AS n1, product.nazv_prod AS n2, recept.kol_prod_v_bludo AS kol

FROM bludo, product, recept

WHERE bludo.nom_bl=recept.nom_bl

AND product.nom_prod=recept.nom_prod

UNION

SELECT bludo.nazv_bl AS n1, " " AS n2, " " AS kol

FROM bludo

WHERE nom_bl NOT IN (SELECT DISTINCT nom_bl FROM recept)

UNION SELECT " " AS n1, nazv_prod AS n2, " " AS kol

FROM product

WHERE nom_prod NOT IN (SELECT DISTINCT nom_prod FROM recept);

Билет №14

Задача 2

SELECT блюдо.ном_бл, [назв_бл]

FROM Блюдо

WHERE NOT EXISTS (

SELECT ном_пр

FROM Рецепт1

WHERE кол_прод_в_блюде > 100 AND

рецепт1.ном_бл = блюдо.ном_бл AND

ном_пр NOT IN (

SELECT ном_пр

FROM Рецепт1, блюдо

WHERE рецепт1.ном_бл = блюдо.ном_бл AND

назв_бл = 'Солянка'));

Билет №15

Задача 2

SELECT [stud].[no_st], [stud].[fio], MIN([uspev].[ocenka]) AS minoc, MAX([uspev].[ocenka]) AS maxoc, AVG([uspev].[ocenka]) AS Sredn

FROM stud, uspev

WHERE stud.no_st = uspev.no_st AND stud.no_st IN ( SELECT uspev.no_st FROM uspev GROUP BY uspev.no_st HAVING AVG(uspev.ocenka) >"4.7")

GROUP BY [stud].[no_st], [stud].[fio];

Билет №16

Задача 2

select блюдо.назв_бл, sum(продукт.калорийность*рецепт.кол_прод_в_блюде) as Калорийность

from (блюдо inner join рецепт on блюдо.ном_бл=рецепт.ном_бл) inner join продукт on рецепт.ном_прод=продукт.ном_прод

group by блюдо.ном_бл, блюдо.назв_бл

having sum(продукт.калорийность*рецепт.кол_прод_в_блюде)>

any (select sum(продукт.калорийность*рецепт.кол_прод_в_блюде)

from рецепт inner join продукт on рецепт.ном_прод=продукт.ном_прод

where рецепт.ном_бл=123

group by ном_бл)

Билет №17

Задача 2

SELECT [spec], [kurs], MIN([uspev].[ocenka]) AS minocen, MAX([uspev].[ocenka]) AS maxocen, AVG([uspev].[ocenka]) AS Sredn

FROM stud, uspev

WHERE [stud].[no_st]=[uspev].[no_st]

GROUP BY [spec], [kurs];

Билет №18

Задача 2

SELECT продукт.ном_пр, [назв_пр], Блюдо.ном_бл, [назв_бл]

FROM продукт, блюдо

WHERE ном_пр NOT IN ( SELECT ном_пр FROM рецепт1 WHERE рецепт1.ном_бл = блюдо.ном_бл);

Билет №19

Задача 2

SELECT nom_bl AS nom, nazv_bl as nazv, "bludo" as type

FROM bludo WHERE kat="diet"

UNION (

SELECT nom_prod AS nom, nazv_prod as nazv, "product" as type

FROM product WHERE kal<500 )

ORDER BY nazv;

Билет20

Задача 2

SELECT [no_st], [fio]

FROM stud

WHERE stud.no_st IN (SELECT no_st FROM uspev WHERE (no_pr IN (SELECT uspev.no_pr FROM uspev, stud WHERE uspev.ocenka<5 AND stud.fio="Иванов П.С." AND stud.no_st=uspev.no_st)) GROUP BY no_st HAVING max(ocenka)<5);

Билет21

Задача 2

Вариант 0 (Иринин) супер (+)

SELECT [блюдо].[категория], min(калорийность) AS мин, max(калорийность) AS макс, avg(калорийность) AS сред

FROM блюдо, (SELECT блюдо.ном_бл AS ном_бл, калорийность

FROM (блюдо inner join рецепт on [блюдо].[ном_бл]=[рецепт].[ном_бл]) inner join продукт on [продукт].[ном_прод]=[рецепт].[ном_прод]

GROUP BY блюдо.ном_бл,калорийность)

WHERE [блюдо].[ном_бл]=ном_бл

GROUP BY [блюдо].[категория];

Вариант1 (с каля-баля)

SELECT [bludo].[kat], min(kal) AS minimum, max(kal) AS maximum, avg(kal) AS average

FROM bludo, [SELECT bludo.nom_bl AS nom_bl, SUM(recept.kol_prod_v_bludo*product.kal) AS kal

FROM bludo, product, recept

WHERE [bludo].[nom_bl]=[recept].[nom_bl] And [product].[nom_prod]=[recept].[nom_prod]

GROUP BY bludo.nom_bl]. AS [%$##@_Alias]

WHERE [bludo].[nom_bl]=nom_bl

GROUP BY [bludo].[kat];

Вариант2 (без каля-баля)

SELECT [bludo].[kat], min(kal) AS minimum, max(kal) AS maximum, avg(kal) AS average

FROM bludo,([SELECT bludo.nom_bl AS nom_bl, SUM(recept.kol_prod_v_bludo*product.kal) AS kal

FROM bludo, product, recept

WHERE [bludo].[nom_bl]=[recept].[nom_bl] And [product].[nom_prod]=[recept].[nom_prod]

GROUP BY bludo.nom_bl)

WHERE [bludo].[nom_bl]=nom_bl

GROUP BY [bludo].[kat];

Билет №22

Задача 2

SELECT stud.no_st, stud.fio, minimum, maximum, average

FROM stud, [SELECT stud.no_st AS no_st, min(uspev.ocenka) AS minimum, max(uspev.ocenka) AS maximum, avg(uspev.ocenka) AS average

FROM stud, uspev

WHERE stud.no_st=uspev.no_st

GROUP BY stud.no_st]. AS [%$##@_Alias]

WHERE average>

(SELECT avg([ocenka])

FROM uspev

WHERE no_st=992027

GROUP BY [no_st];)

AND stud.no_st=no_st;

Билет №23

Задача 2

SELECT [stud].[spec], [uspev].[ocenka], count([uspev].[no_st]) AS kolvo_st, count([uspev].[no_pr]) AS kolvo_pr

FROM stud, uspev

WHERE [stud].[no_st]=[uspev].[no_st]

GROUP BY stud.spec, uspev.ocenka;

Билет №24

Задача 2

SELECT no_pr AS no, fio, "Преподаватель" AS kateg

FROM prepod

UNION SELECT no_st AS no, fio, "Студент" AS kateg

FROM stud

WHERE no_st IN(SELECT no_st FROM rukov)

ORDER BY fio;

Билет №25

Задача 2

SELECT stud.no_st, stud.fio, predm.naim_pr AS naim_pr, uspev.ocenka AS ocenka

FROM stud, predm, uspev

WHERE stud.no_st=uspev.no_st

AND predm.no_pr=uspev.no_pr

UNION SELECT stud.no_st, stud.fio, " " AS naim_pr, " " AS ocenka

FROM stud

WHERE stud.no_st NOT IN (SELECT DISTINCT no_st FROM uspev);

Билет №26

Задача 2

SELECT stud.no_st, stud.fio, predm.no_pr AS nop, predm.naim_pr AS name

FROM stud, predm

WHERE

predm.kurs=stud.kurs

AND NOT EXISTS(

SELECT no_st, no_pr

FROM uspev

WHERE uspev.no_pr=predm.no_pr

AND uspev.no_st=stud.no_st)

UNION SELECT stud.no_st, stud.fio, NULL AS nop, NULL AS name

FROM stud, predm

WHERE stud.no_st NOT IN(

SELECT stud.no_st

FROM stud, predm

WHERE predm.kurs=stud.kurs

AND NOT EXISTS(

SELECT no_st, no_pr

FROM uspev

WHERE uspev.no_pr=predm.no_pr

AND uspev.no_st=stud.no_st));

Билет №27

Задача 2

SELECT [stud].[no_st], [stud].[fio]

FROM stud, uspev

WHERE stud.no_st=uspev.no_st AND uspev.no_pr IN (SELECT DISTINCT [uspev].[no_pr] AS no_pr FROM uspev, stud WHERE [stud].[fio]="AAA" And [stud].[no_st]=[uspev].[no_st] And [uspev].[ocenka]=5)

GROUP BY [stud].[no_st], [stud].[fio]

HAVING min(uspev.ocenka)=5 AND max(uspev.ocenka)=5;

Билет №28

Задача 2

I Вариант

SELECT Продукт.ном_прод, Продукт.назв_прод

FROM Продукт INNER JOIN (Блюдо INNER JOIN Рецепт ON Блюдо.ном_бл = Рецепт.ном_бл) ON Продукт.ном_прод = Рецепт.ном_пр

WHERE ((([Рецепт]![кол_прод_в_блюде])>100) AND (([Блюдо]![категория])="малокалорийные"));

II Вариант (лучше)-димин

SELECT [продукт].[ном_пр], [назв_пр]

FROM продукт

WHERE ном_пр IN ( SELECT ном_пр FROM рецепт,блюдо WHERE кол_прод_в_блюде > 100 AND рецепт.ном_бл = блюдо.ном_бл AND категория = “малокалорийные”);

Билет №29

Задача 2

I Вариант

SELECT DISTINCT [stud].[no_st], [stud].[fio]

FROM stud, uspev

WHERE stud.no_st = uspev.no_st AND uspev.ocenka = 5 AND uspev.no_pr IN ( SELECT uspev.no_pr FROM stud, uspev WHERE uspev.no_st = stud.no_st AND stud.fio = 'Иванов' AND uspev.ocenka =5);

II Вариант

SELECT Stud.no_st, Stud.fio

FROM Иванов INNER JOIN (Stud INNER JOIN (Predm INNER JOIN Uspev ON Predm.no_pr = Uspev.no_pr) ON Stud.no_st = Uspev.no_st) ON Иванов.no_pr = Uspev.no_pr

WHERE (((Stud.fio)<>("Иванов П.С.")) AND (([Uspev]![ocenka])="отлично"));

Запрос Иванов

SELECT Uspev.no_st, Uspev.ocenka, Uspev.no_pr

FROM Stud INNER JOIN (Predm INNER JOIN Uspev ON Predm.no_pr = Uspev.no_pr) ON Stud.no_st = Uspev.no_st

WHERE ((([Stud]![fio])="Иванов П.С.") AND (([Uspev]![ocenka])="Отлично"));

Билет №30

Задача 2

SELECT no_pr as no, fio, "Преподаватель" as kateg

From prepod

WHERE no_pr IN (SELECT no_pr FROM rukov)

UNION SELECT no_st as no, fio, "Студент" as kateg

FROM stud

WHERE no_st IN ( SELECT no_st FROM rukov)

ORDER BY fio;

Билет №31

задача 2

SELECT no_pr AS no, fio, "Teacher" AS Kateg

FROM Prepod

WHERE Month ([Prepod]![data_rojd])=1

UNION

SELECT no_st AS no, fio, "Student" AS Kateg

FROM Stud

WHERE Month ([Stud]![data_rojd])=1

ORDER BY fio;

Билет №32

задача 2

SELECT predm.no_pr, predm.naim_pr, predm.kol_chasov, predm.kafedra, predm_1.no_pr, predm_1.naim_pr

FROM predm

LEFT JOIN predm AS predm_1 ON (predm_1.kafedra=predm.kafedra) AND (predm_1.kol_chasov=predm.kol_chasov) AND (predm_1.no_pr<>predm.no_pr);

Билет №33

задача 2

SELECT [stud].[no_st], [stud].[fio], [predm].[no_pr], [predm].[naim_pr]

FROM stud, predm

WHERE [stud].[kurs]=[predm].[kurs];

Билет №34

Задача 2

SELECT ном_бл AS no, назв_бл AS nazv, "Bludo" AS Kateg

FROM Блюдо

UNION

SELECT ном_прод AS no, назв_прод AS nazv, "Product" AS Kateg

FROM Продукт

WHERE ном_прод IN (SELECT ном_пр FROM Рецепт)

ORDER BY nazv;

или

SELECT ном_бл,назв_бл AS название, "блюдо" AS тип

FROM блюдо

UNION SELECT продукт.ном_пр, назв_пр AS название, "продукт" AS тип

FROM продукт, рецепт

WHERE продукт.ном_пр = рецепт.ном_пр

ORDER BY название;

Билет №35

Задача 2

SELECT Продукт.ном_прод, Продукт.назв_прод

FROM Продукт INNER JOIN (Блюдо INNER JOIN Рецепт ON Блюдо.ном_бл = Рецепт.ном_бл) ON Продукт.ном_прод = Рецепт.ном_пр

WHERE ((([Рецепт]![кол_прод_в_блюде]) Between 100 And 200) AND (([Блюдо]![категория])="диетическое"));

Вместо ! “.”

Билет №36

Задача 2

SELECT [ном_бл], [назв_бл]

FROM блюдо

WHERE (select count(рецепт.ном_пр) from рецепт where рецепт.ном_бл=блюдо.ном_бл) = (select count(рецепт.ном_пр) from блюдо, рецепт where рецепт.ном_бл=блюдо.ном_бл and назв_бл="солянка") and (select count(р.ном_пр) from рецепт р where р.ном_бл=блюдо.ном_бл and (р.кол_прод_в_блюде <=100 or not exists ( select ном_пр from блюдо, рецепт where рецепт.ном_бл=блюдо.ном_бл and назв_бл="солянка" and рецепт.ном_пр=р.ном_пр)))=0;

9