Шпоры по базам данных - файл n6.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скачать

n6.doc


Задание 3. Построить SQL-запрос для выборки сведений из БД, содержащей таблицы:

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

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

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

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

FROM s first LEFT JOIN s second ON( first.city=second.city)

WHERE first.status<=second.status

ORDER BY s.s_name
БИЛЕТ №38

Извлечь поставщиков, которые поставляют товары, и товары которые поставляются поставщикам. Результат должен содержать колонки: «код» (поставщика/товара); «название» (поставщика/товара); «тип» (поставщик/товар); «количество» (суммарное число товаров во всех поставках поставщика / товара). Упорядочить по типам, затем – по названиям.
SELECT DISTINER sp.s_no, s.s_name, поставщикютип, SUM(sp.qty)

FROM s INNER JOIN sp ON (s.s_no=sp.s_no)

WHERE count(*)>0

GROUP BY (sp.s_no)

UNION

SELECT p.p_no, p.p_name ‘товар’ AS ‘тип’, SUM

FROM p INNER JOIN sp ON (p.p_no=sp.p_no)

WHERE count(*)>0

GROUP BY sp.p_no

ORDER BY 3.2

БИЛЕТ №39

Извлечь коды и названия поставщиков, которые либо вовсе не поставляют всего один товар, причем из Парижа. Результат упорядочить по названиям.
SELECT sp.s_no, s.s_name

FROM s INNER JOIN sp ON(s.s_no=sp.s_no)

WHERE count(*)=0

UNION

SELECT sp.s_no, s.s_name

FROM s INNER JOIN sp ON (s.s_no=sp.s_no)

WHERE count(*)=1 AND city=’ paris’

GROUP BY sp.s_no

ORDER BY s.s_name
БИЛЕТ №40

Извлечь сведения о поставщиках со средним количеством товаров в поставке выше 200: код, название, количество поставок и суммарное количество поставляемых товаров. Упорядочить по названиям.
SELECT sp.s_no, s.s_name, count(*), SUM(sp.qty)

FROM s INNER JOIN sp ON (s.s_no=sp.s_no)

WHERE AVG(sp.qty)>200

GROUP BY sp.s_no

ORDER BY s.s_name
БИЛЕТ №41

Извлечь статистику поставщиков: статус, город, количество поставщиков с данным статусом из данного города, количество их поставок, суммарное количество поставляемых ими товаров. Упорядочить по статусам, затем – по городам.
SELECT s.status, s.city, count(*), SUM(sp.qty), count(sp.s_no)

FROM s INNER JOIN sp ON (s.s_no=sp.s_no)

GROUP BY s.status, s.city

ORDER BY s.status, s.city
БИЛЕТ №42

Извлечь сведения о товарах, у которых их суммарное количество в поставках поставщиков из Парижа выше, чем суммарное количество товаров, поставляемых поставщиком с кодом «123123»: код, название, суммарное количество.
SELECT sp.p_no, p.p_name, sum(sp.qty)

FROM sp, s, p

WHERE(sp.s_no=s.s_no) AND (sp.p_no=p.p_no) AND(s.city=’Paris’)

GROUP BY sp.p_no, p.p_name

HAVING SUM(sp.qty)>(SELECT SUM(sp.qty)

FROM sp

WHERE sp.s_no=’123123’)

БИЛЕТ № 43

Извлечь коды и названия поставщиков, поставляющих более 100 штук в точности тех товаров, которые поставляет поставщик «Иванов и Ко». отсортировать результат в алфавитном порядке названий.
SELECT s.s_no, s.s_name

FROM s INNER JOIN sp ON (s.s_no=sp.s_no)

WHERE

EXIST(SELECT DISTINCT sp.p_no

FROM sp INNER JOIN s ON (s.s_no=sp.s_no)

WHERE (s.s_name=’ Ivanov’) AND (sp.qty>100)

ORDER BY s.s_name
БИЛЕТ №44

Извлечь коды и названия товаров, которые поставляют в количестве больше 100 штук, по крайней мере, все те поставщики, которые поставляют товар «Шайба». Отсортировать результат в обратном алфавитном порядке названий.
SELECT sp.p_no, p.p_name

FROM p INNER JOIN sp ON (sp.p_no=p.p_no)

WHERE NOT EXIST(SELECT sp.s_no

FROM sp INNER JOIN p ON (…)

WHERE (p.p_name=’SHaiba’) AND

NOT IN (SELECT sp.s_no FROM sp, p

WHERE ((sp.p_no=p.p_no) AND sp.qty>100)

ORDER BY p.p_name DECT
БИЛЕТ №45

Извлечь коды и названия поставщиков, не поставляющих в количестве более 100 штук ни одного товара из тех, которые поставляет поставщик «Иванов и К­о» (предполагается, что это поставщик поставляет хотя бы один товар). Отсортировать результат в обратном порядке кодов.
SELECT s.s_no, s.s_name

FROM s INNER JOIN sp ON(s.s_no=sp.s_no)

WHERE NOT EXIST((SELECT sp.p_no

FROM sp INNER JOIN s ON (…)

WHERE s.s_name=’Ivanov) AND sp.qty>100)

ORDER BY s.s_no DECT




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