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