|
Программирование >> Понятие sql
Глава 9 SELECT first.sname, second.sname FROM Salespeople first, Salespeople second WHERE first.city = second.city AND first.sname < second.sname; Псевдонимам нет необходимости иметь именно такие имена. SELECT cname, first.onum, second.onum FROM Orders first, Orders second, Customers WHERE first.cnum = second.cnum AND first.cnum = Customers.cnum AND first.onum < second.onum; Ваш вывод может иметь некоторые отличия, но в вашем ответе все логические компоненты должны быть такими же. SELECT a.cname, a.city FROM Customers a, Customers b WHERE a.rating = b.rating AND b.cnum = 2001; SELECT onum, cname FROM Orders, Customers WHERE Customers.cnum = Orders.cnum; SELECT onum, cname, sname FROM Orders, Customers, Salespeople WHERE Customers.cnum = Orders.cnum AND Salespeople.snum = Orders.snum; SELECT cname, sname, comm FROM Salespeople, Customers WHERE Salespeople.snum = Customers.snum AND comm * .12; SELECT onum, comm * amt FROM Salespeople, Orders, Customers WHERE rating > 100 AND Orders.cnum = Customers.cnum AND Orders.snum = Salespeople.snum; SELECT snum, SUM (amt) FROM Orders GROUP BY snum HAVING SUM (amt) > (SELECT MAX (amt) FROM Orders); Глава 11 SELECT cnum, cname FROM Customers outer WHERE rating = (SELECT MAX (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); 3. Решение с помощью объединения: SELECT DISTINCT first.snum, sname FROM Salespeople first, Customers second WHERE first.city = second.city AND first.snum <> second.snum; SELECT * FROM Orders WHERE cnum = (SELECT cnum FROM Customers WHERE cname = Cisneros); SELECT * FROM Orders WHERE cnum IN (SELECT cnum FROM Customers WHERE cname = Cisneros); SELECT DISTINCT cname, rating FROM Customers, Orders WHERE amt > (SELECT AVG (amt) FROM Orders) AND Orders.cnum = Customers.cnum; Соотнесенный подзапрос находит всех заказчиков, не обслуживаемых данным продавцом, и выясняет: живет ли кто-нибудь из них в его городе. Решение с помощью обьединения является более простым и более интуитивным. Оно находит случаи, где поля city совпадают, аполя snums нет. Следовательно, обьединение является более изящным решением для этой проблемы, чем то, которое мы исследовали до этого. Имеется еще более изящное решение с помощью подзапроса, с которым Вы столкнетесь позже. Глава 12 SELECT * FROM Salespeople first WHERE EXISTS (SELECT * FROM Customers second WHERE first.snum = second.snum AND rating = 300); SELECT a.snum, sname, a.city, comm FROM Salespeople a, Customers b WHERE a.snum = b.snum AND b.rating = 300; SELECT * FROM Salespeople a WHERE EXISTS (SELECT * FROM Customers b WHERE b.city = a.city AND a.snum <> b.snum); SELECT * FROM Customers a WHERE EXISTS (SELECT * FROM Orders b WHERE a.snum = b.snum AND a.cnum <> b.cnum) Глава 13 SELECT * FROM Customers WHERE rating >= ANY (SELECT rating FROM Customers WHERE snum = 1002);
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |