Классика баз данных - статьи

       

Такое расширение предыдущего примера путем


Такое расширение предыдущего примера путем добавления дополнительного условия показано на рис. 15. В этом запросе требуется найти имена и зарплаты служащих, получающих больше, чем Льюис, и работающих в отделе, продающем ручки.



Рис. 15. Расширение примера с рис. 14, см.

Еще один запрос может состоять в нахождении имен служащих, получающих больше, чем их менеджеры. Его можно переформулировать следующим образом: вывести имена служащих, менеджером которых может быть Джонс (JONES, например), и размер зарплаты которых больше S1 (например), где S1 – зарплата Джонса. Здесь один и тот же элемент примера используется для связи менеджера в первой строке и имени во второй строке, и один и тот же элемент примера применяется для сравнения зарплат. Порядок строк, конечно, вновь несущественен. После получения ответа пользователь имеет возможность вернуться назад и модифицировать или исправить старый запрос. Если, например, пользователь не уверен, что последний запрос верен, т.е. что запрос был правильно сформулирован, он может снабдить каждый элемент операторами вывода, получив при этом имена служащих, их зарплаты и имена их руководителей в первой строке и те же имена руководителей и их зарплаты во второй строке. Таким способом пользователь может проверить правильность выполнения запроса.



Рис. 16. Две связи в одной и той же таблице, см.

Выборка с использованием отрицания. Вывести все отделы, в которых продается некоторый товар товар, не поставляемый компанией Pencraft. Этот запрос показан на рис. 17. Здесь использован оператор отрицания (¬) для всего выражения запроса в таблице SUPPLY. Этот запрос может быть перефразирован следующим образом: вывести названия отделов, продающих товары INK, такие что PENCRAFT не поставляет товары INK. Другими словами, система должна просматривать пары (INK, PENCRAFT) по всей таблице, и название соответствующего отдела выводится только в том случае, если такой пары не находится. Этот запрос отличается от того, который обсуждается в следующем абзаце.


Содержание  Назад  Вперед