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)