Приложение А. Ответы купражнениям
ГЛАВАJJ
1.SELECT cnum, cname FROM Customers outer WHERE rating =
(SELECT МАХ (rating)
FROM Customers inner
WHERE inner. city = outer. city);
2.Решение с помощью связанных подзапросов
SELECT snum, sname FROM Salespeople main WHERE city IN
(SELECT city
FROM Customers inner
WHERE inner.snum < > main.snum);
Решение с помощью соединения:
SELECT DISTINCT first.snum, sname
FROM Salespeople first, Customers second WHERE first.city =second.city
AND first.snum < > second.snum;
Связанный подзапрос находит всех покупателей, которые не обслуживаются дан
ным продавцом и дает возможность выявить ситуацию, когда кто-то из них находится
в том же городе. Решение с помощью соединения проще и более соответствует интуи тивным соображениям. Он выявляет случаи, когда значения в поле city совпадают, а значения в поле snums не совпадают. Следовательно, с помощью операции соединения получается более элегантное решение проблемы. Надо принять это во внимание, на чиная с этого момента. Более элегантный подзапрос для решения этой проблемы будет
рассмотрен позже.
ГЛАВА 12
1. SELECT •
FROM Salespeople first WHERE EXISTS
(SELECT •
FROM Customers second
WHERE first.snum = second.snum AND rating = 300);
2.SELECT a.snum, sname, a.city, comm FROM Salespeople а, Customers Ь WHERE a.snum = b.snum
AND b.rating = 300;
3.SELECT •
FROM Salespeole а
WHERE EXISTS