Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Шпоры по базам данных / Шпора по SQL 3

.doc
Скачиваний:
64
Добавлен:
02.05.2014
Размер:
155.65 Кб
Скачать

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

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

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

Извлечь все пары продуктов, имеющих одинаковую калорийность. Указать номера и названия продуктов, их калорийность (для продуктов, не имеющих пары, соответствующие значения – 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 назв_бл= "жюльен")))

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

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

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

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

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

FROM Блюдо

WHERE ном_бл IN (

SELECT ном_бл

FROM Рецепт

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

NOT EXISTS (

SELECT *

FROM Рецепт

WHERE ном_бл IN (

SELECT ном_бл

FROM Блюдо

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

ном_пр NOT IN (

SELECT ном_пр

FROM Рецепт

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

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

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

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

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

SELECT Kal.калорийность, Pr.kol_pr, Bl.kol_bl

FROM [Select distinct П_2.калорийность

from Продукт П_2]. AS Kal,

[SELECT DISTINCT К.калорийность,

count(t.ном_прод) as kol_pr

FROM [Select distinct П_2.калорийность

from Продукт П_2 ]. AS К,

(SELECT Distinct П_4.калорийность, П_4.ном_прод

from Продукт П_4, (Select distinct П_5.калорийность

from Продукт П_5 ) П_6

where П_4.калорийность=П_6.калорийность)

AS t

WHERE К.калорийность=t.калорийность

GROUP BY К.калорийность]. AS Pr,

[SELECT Distinct П_3.калорийность, count(Р_3.ном_бл) as kol_bl

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

where П_3.ном_прод=Р_3.ном_пр

group by П_3.калорийность]. AS Bl

WHERE Kal.калорийность=Pr.калорийность

and Kal.калорийность=Bl.калорийность;

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

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

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

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

SELECT distinct Блюдо.назв_бл as nm_bl,

Продукт.назв_прод as nm_pr,Рецепт.Кол_прод_в_блюде as kol

from Блюдо,Продукт,Рецепт

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

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

union

SELECT distinct Блюдо.назв_бл as nm_bl,' ' as nm_pr,' ' as kol

from Блюдо, Рецепт

Where ( Блюдо.ном_бл not in (Select Рецепт.ном_бл

From Рецепт))

UNION

SELECT distinct ' ' as nm_bl,Продукт.назв_прод as nm_pr,' ' as kol

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

Where ( Продукт.ном_прод not in (Select Рецепт.ном_пр

From Рецепт));

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

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

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

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

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

FROM Блюдо

WHERE NOT EXISTS (

SELECT ном_пр

FROM Рецепт1

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

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

ном_пр NOT IN (

SELECT ном_пр

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

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

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

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) – сдача конкр. студентом конкр. предмета.

Извлечь сведения о студентах со средним баллом выше 4,7: номер, ф.и.о., значения минимального, максимального и среднего баллов (не учитывать "хвосты")

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]

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

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

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

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

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 ном_бл)

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 [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];

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

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

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

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

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

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

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

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

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

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

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

SELECT Блюдо.ном_бл as nom, Блюдо.назв_бл as name,'блюдо' as tip

from Блюдо

where Блюдо.категория='диетические'

UNION

SELECT Продукт.ном_прод as nom,

Продукт.назв_прод as name,'продукт' as tip

from Продукт

where Продукт.калорийность<500

ORDER BY name;

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 [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);

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

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

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

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

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

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

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

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

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

GROUP 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) – сдача конкр. студентом конкр. предмета.

Извлечь сведения о студентах со средним баллом выше среднего балла студента номер 992027: номер, ф.и.о., значения минимального, максимального и среднего баллов (не учитывать "хвосты").

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;

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 [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;

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

Prepod (no_pr, fio, kafedra, data_rojd) – справочник препреподавателей;

Rukov (no_st, no_pr, ocenka, data) – руководство конкр. студентом конкр. преподавателем.

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

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;

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.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);

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.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));

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 [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;

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

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

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

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

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

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

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

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

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

FROM продукт

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

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 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])="Отлично"));

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

Prepod (no_pr, fio, kafedra, data_rojd) – справочник препреподавателей;

Rukov (no_st, no_pr, ocenka, data) – руководство конкр. студентом конкр. преподавателем.

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

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;

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

Prepod (no_pr, fio, kafedra, data_rojd) – справочник препреподавателей;

Rukov (no_st, no_pr, ocenka, data) – руководство конкр. студентом конкр. преподавателем.

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

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;

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 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);

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 [stud].[no_st], [stud].[fio], [predm].[no_pr], [predm].[naim_pr]

FROM stud, predm

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

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

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

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

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

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 название;

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

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

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

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

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

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

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

Вместо ! “.”

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

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

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

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

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;

Поставщик (КодПост, НазвПост, Статус, Город) – справочник поставщиков;

Товар (КодТовара, НазвТовара, Вес, Цвет, Город) – справочник товаров;

Поставка (КодПост, КодТовара, Количество) – поставка данным поставщикам данного товара.

Извлечь все пары поставщиков из одного города, такие, что статус второго поставщика не меньше статуса первого. Для каждого напарника указать код, название, статус. Для поставщиков, не имеющих пары, значения напарника - NULL. Результат упорядочить по названиям поставщиков.

Соседние файлы в папке Шпоры по базам данных