Программирование >>  Понятие sql 

1 ... 76 77 78 [ 79 ] 80 81 82 ... 95


Глава 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);

cnum

cname

city

rating

snum

2002

Giovanni

Rome

1003

2003

San Jose

1002

2004

Grass

Berlin

1002

2008

Cisneros

SanJose

1007



1 ... 76 77 78 [ 79 ] 80 81 82 ... 95

© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика