Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
45
Добавлен:
26.04.2015
Размер:
68.61 Кб
Скачать

111А) то же с inner join

SELECT Pr.maker, pr.type, Pr.model, L.speed

FROM Product AS Pr INNER JOIN Laptop AS L ON Pr.model=L.model

WHERE L.speed>600;

113) Найдите размеры жёстких дисков, совпадающих у двух или более ПК. Вывести HD.

3разных способа написания запроса:

a) SELECT hd

FROM PC

GROUP BY hd

HAVING count(hd)>=2;

B) SELECT DISTINCT a.hd

FROM pc AS a INNER JOIN pc AS b ON (a.hd=b.hd) AND (a.code<>b.code);

C)

SELECT DISTINCT t.hd

FROM PC AS t

WHERE EXISTS (SELECT *

FROM PC

WHERE pc.hd = t.hd AND

pc.code <> t.code

);

Exists

Предикат EXISTS принимает значение TRUE, если подзапрос содержит любое количество строк, иначе его значение равно FALSE. Для NOT EXISTS все наоборот. Этот предикат никогда не принимает значение UNKNOWN.

Обычно предикат EXISTS используется в зависимых (коррелирующих) подзапросах. Этот вид подзапроса имеет внешнюю ссылку, связанную со значением в основном запросе. Результат подзапроса может зависеть от этого значения и должен оцениваться отдельно для каждой строки запроса, в котором содержится данный подзапрос. Поэтому предикат EXISTS может иметь разные значения для разных строк основного запроса.

Задание: 8 Найдите производителя, выпускающего ПК, но не ПК-блокноты.

Select distinct maker

from Product

where type='PC' and not exists

(select maker from Product Pr

where Pr.type='Laptop' and Pr.maker=Product.maker)

Найти тех производителей портативных компьютеров, которые также производят принтеры:

SELECT DISTINCT maker

FROM Product AS lap_product

WHERE type = 'laptop' AND

EXISTS (SELECT maker

FROM Product

WHERE type = 'printer' AND

maker = lap_product.maker );

Задание: 13 Найдите среднюю скорость ПК, выпущенных производителем A.

SELECT AVG(speed) AS avg_speed FROM PC

WHERE model IN (SELECT model FROM Product

WHERE maker='A')

Задание: 18 Найдите производителей самых дешевых цветных принтеров. Вывести: maker, price

Select distinct Product.maker, Printer.price

from Product,Printer

where Product.model=printer.model and Printer.color='y' and Printer.Price=(select min(price) from printer where Printer.color='y')

Задание: 21 Найдите максимальную цену ПК, выпускаемых каждым производителем. Вывести: maker, максимальная цена.

select g.maker, max(c.price) from pc c

inner join

(select p.maker ,p.model from product p

where p.type = 'pc')g

on g.model = c.model

group by g.maker

Задание: 23 Найдите производителей, которые производили бы как ПК со скоростью не менее 750 МГц, так и ПК-блокноты со скоростью не менее 750 МГц. Вывести: Maker

Select distinct maker from Product

where maker in (select maker from Product PM inner join PC on PM.model=PC.model where PC.speed>=750)

and maker in (select maker from Product PL inner join Laptop on PL.model=Laptop.model where Laptop.speed>=750)

8

Соседние файлы в папке Подмога_БД_Величко