Шпоры по базам данных - файл n7.doc

приобрести
Шпоры по базам данных
скачать (114.7 kb.)
Доступные файлы (8):
n1.doc49kb.30.01.2004 20:11скачать
n2.doc30kb.14.11.2003 18:35скачать
n3.doc84kb.08.01.2003 20:54скачать
n4.doc171kb.30.01.2004 20:24скачать
n5.doc35kb.13.12.2004 11:05скачать
n6.doc35kb.30.01.2004 14:14скачать
n7.doc152kb.30.01.2004 20:22скачать
n8.doc66kb.24.01.2003 21:57скачать
Победи орков

Доступно в Google Play

n7.doc

  1   2   3   4   5
Блюдо (ном_бл, назв_бл, категория) – справочник блюд;

Продукт (ном_прод; назв_прод, калорийность) – справочник продуктов;

Рецепт (ном_бл, ном_пр, кол_прод_в_блюде) – сколько некоторого продукта в некотором блюде.

Извлечь все пары продуктов, имеющих одинаковую калорийность. Указать номера и названия продуктов, их калорийность (для продуктов, не имеющих пары, соответствующие значения – Null)

Select x.ном_прод, x.назв_прод, x.калорийность, y.ном_прод, y.назв_прод

From Продукт as x Left Join Продукт as y ON

(x.калорийность = y.калорийность

And x.ном_прод <> y.ном_прод)

Блюдо (ном_бл, назв_бл, категория) – справочник блюд;

Продукт (ном_прод; назв_прод, калорийность) – справочник продуктов;

Рецепт (ном_бл, ном_пр, кол_прод_в_блюде) – сколько некоторого продукта в некотором блюде.

Извлечь блюда, для которых заданы продукты, и продукты, используемые в блюдах. Результат должен содержать колонки: номер (блюда или продукта), название, тип ("блюдо" или "продукт" соответственно) и быть упорядоченным по названиям.

Select ном_прод As ном, назв_прод As назв, “Продукт” As категория

From Продукт

Where ном_прод In (Select ном_прод From Рецепт)

Union

Select ном_бл As ном, назв_бл As назв, “Блюдо” As категория

From Блюдо

Where ном_бл In (Select ном_бл From Рецепт)

Order by назв

Stud (no_st, fio, spec, kurs, no_gr) – справочник студентов;

Predm (no_pr, naim_pr, kol_chasov, kafedra, spec, kurs) – справочник предметов;

Uspev (no_st, no_pr, ocenka, data_sdachi) – сдача конкр. студентом конкр. предмета.

Сдача студентами предметов: фамилия студента, название предмета, полученная оценка (для студентов, не сдавших ни одного предмета, и предметов, не сданных ни одним студентом, – должны быть Null-значения).

select stud.fio, predm.naim_pr, uspev.ocenka

from (stud left join uspev on stud.no_st = uspev.no_st) left join predm on uspev.no_pr=predm.no_pr

UNION select stud.fio, predm.naim_pr, uspev.ocenka

from (stud right join uspev on stud.no_st = uspev.no_st) right join predm on uspev.no_pr=predm.no_pr;

Stud (no_st, fio, spec, kurs, no_gr) – справочник студентов;

Predm (no_pr, naim_pr, kol_chasov, kafedra, spec, kurs) – справочник предметов;

Uspev (no_st, no_pr, ocenka, data_sdachi) – сдача конкр. студентом конкр. предмета.

Извлечь номера и названия предметов, по которым получил отличную оценку хотя бы один студент первого курса специальности АСУ

Select distinct Predm.no_pr, Predm.naim_pr

From Stud, Predm, Uspev

Where Stud.no_st = Uspev.no_st

And Predm.no_pr = Uspev.no_pr

And Uspev.ocenka=5

And Stud.spec=АСУ

And Stud.kurs=1

Stud (no_st, fio, spec, kurs, no_gr) – справочник студентов;

Predm (no_pr, naim_pr, kol_chasov, kafedra, spec, kurs) – справочник предметов;

Uspev (no_st, no_pr, ocenka, data_sdachi) – сдача конкр. студентом конкр. предмета.

Извлечь номера и названия предметов, сданных на "хорошо" и "отлично" всеми студентами первого курса специальности АСУ

SELECT [predm].[no_pr], [predm].[naim_pr]

FROM (uspev INNER JOIN predm ON [uspev].[no_pr]=[predm].[no_pr]) INNER JOIN stud ON [uspev].[no_st]=[stud].[no_st]

WHERE ([uspev].[ocenka]=4 Or [uspev].[ocenka]=5) And [stud].[kurs]=1 And [stud].[spec]="asu";

Stud (no_st, fio, spec, kurs, no_gr) – справочник студентов;

Predm (no_pr, naim_pr, kol_chasov, kafedra, spec, kurs) – справочник предметов;

Uspev (no_st, no_pr, ocenka, data_sdachi) – сдача конкр. студентом конкр. предмета.

Извлечь номера и фио студентов, сдавших на "отлично" в точности все те предметы, которые сдал на "отлично" студент Иванов П.С.

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

FROM Uspev, Stud

WHERE Uspev.no_pr In( Select no_pr From Uspev, Stud Where Uspev.no_st = Stud.no_st And Stud.fio ="иванов п.с." And Uspev.ocenka = 5) And Uspev.no_st = Stud.no_st And Uspev.ocenka = 5 And Stud.fio <> "иванов п.с.";

Блюдо (ном_бл, назв_бл, категория) – справочник блюд;

Продукт (ном_прод; назв_прод, калорийность) – справочник продуктов;

Рецепт (ном_бл, ном_пр, кол_прод_в_блюде) – сколько некоторого продукта в некотором блюде.

Извлечь номера и названия всех блюд с указанием названия каждого используемого продукта и его количества (для блюд, для которых не указано ни одного продукта, соответствующие значенияNull).

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

From (

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

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

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

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

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

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

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

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

Блюдо (ном_бл, назв_бл, категория) – справочник блюд;

Продукт (ном_прод; назв_прод, калорийность) – справочник продуктов;

Рецепт (ном_бл, ном_пр, кол_прод_в_блюде) – сколько некоторого продукта в некотором блюде.

Извлечь номера и названия всех блюд, для которых не указаны входящие в него продукты, либо указан всего один продукт

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

From Блюдо

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

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

From Блюдо

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

From Рецепт

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

Блюдо (ном_бл, назв_бл, категория) – справочник блюд;

Продукт (ном_прод; назв_прод, калорийность) – справочник продуктов;

Рецепт (ном_бл, ном_пр, кол_прод_в_блюде) – сколько некоторого продукта в некотором блюде.

Извлечь сведения о блюдах с калорийностью ниже 500: номер, название, количество продуктов, входящих в блюдо (калорийность блюда рассчитывать как произведение калорийности продукта на количество продукта в блюде, просуммированное по всем продуктам, входящим в блюдо)

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

From (

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

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

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

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

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

Блюдо

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

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

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

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

Блюдо (ном_бл, назв_бл, категория) – справочник блюд;

Продукт (ном_прод; назв_прод, калорийность) – справочник продуктов;

Рецепт (ном_бл, ном_пр, кол_прод_в_блюде) – сколько некоторого продукта в некотором блюде.

Извлечь номера и названия блюд, содержащих в количестве более 100 ед. хотя бы один продукт из тех, которые содержит блюдо "Жюльен с грибами а ля рюс"

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

FROM блюдо xb

WHERE ном_бл IN (

SELECT ном_бл

FROM рецепт XР

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

AND ном_пр IN (

SELECT ном_пр

FROM рецепт YР

WHERE ном_бл IN (

SELECT ном_бл

FROM блюдо Yb

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


Блюдо (ном_бл, назв_бл, категория) – справочник блюд;

Продукт (ном_прод; назв_прод, калорийность) – справочник продуктов;

Рецепт (ном_бл, ном_пр, кол_прод_в_блюде) – сколько некоторого продукта в некотором блюде.
  1   2   3   4   5


Учебный материал
© nashaucheba.ru
При копировании укажите ссылку.
обратиться к администрации