русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

FROM Pracivnyky


Дата добавления: 2015-07-09; просмотров: 457; Нарушение авторских прав


WHERE Filia = Kod_Filii)

 

Filii
Kod_Filii . . . Misto Plan . . .
         

 

 

Pracivnyky
Kod_Pracivnyka . . . Filia . . . Prodano . . .
           

 

Головний запит по черзі перевіряє кожний рядок таблиці Filii. Підлеглий запит знаходить всіх працівників „біжучої” філії і повертає стовпчик з фактичними об’ємами продаж для кожного працівника. Секція WHERE головного запиту обчислює 50% від плану продаж філії і порівнює це значення зі всіма об’ємами фактичних продаж, отриманих в результаті виконання підлеглого запиту. Якщо всі об’єми фактичних продаж працівників перевищують значення 50% від плану філії, то перевірка < ALL повертає значення TRUE і дана філія включається в таблицю результатів запиту. Якщо – ні, то така філія не попадає в таблицю результатів.

Перевірка ALL, як і перевірка ANY, включає в себе не одне порівняння, а кілька. Якщо прочитати умову порівняння дещо по-іншому, то це допоможе зрозуміти зміст перевірки і дозволить уникнути помилок.

Наприклад, перевірку

WHERE X < ALL (SELECT Y . . .)

слід читати не як

„де Х менше, чим всі вибрані Y . . .”

а так:

„де для всіх Y: Х менше, чим Y . . .”

Тоді запит із прикладу 94 можна переформулювати таким чином:

94). Вивести список філій, в яких для всіх працівників: 50% плану філії менше, чим фактичний об’єм продаж кожного працівника цієї філії.

Якщо підлеглий запит в перевірці ALL не повертає жодного рядка, або якщо стовпчик його результатів містить значення NULL, то в різних СУБД перевірка ALL виконується по-різному. Стандарт SQL задає правила, які визначають результати перевірки ALL:

1) Якщо підлеглий запит повертає порожній стовпчик, то перевірка ALL дає результат TRUE (вважається, що умова порівняння виконується, навіть якщо результати підлеглого запиту відсутні; тобто виконується для всіх рядків => якщо рядків нема → TRUE.



2) Якщо операція порівняння має значення TRUE для кожного значення в стовпчику результатів підлеглого запиту, то перевірка ALL дає результат TRUE (умова порівняння виконується для кожного значення, отримано підлеглим запитом).

3) Якщо операція порівняння має значення FALSE для якогось (хоча би одного) значення в стовпчику результатів підлеглого запиту, то перевірка ALL дає результат FALSE (умова порівняння виконується не для кожного значення, отримано підлеглим запитом).

4) Якщо операція порівняння не має значення FALSE для жодного значення в стовпчику результатів підлеглого запиту, але в цьому стовпчику є одне або кілька значень NULL, то перевірка ALL дає результат NULL (не можна визначити, чи для всіх значень, отриманих підлеглим запитом, справедлива умова порівняння: можливо – для всіх, а можливо – і ні, - все залежить від „справжніх” значень невідомих чи відсутніх даних).

Ті самі помилки, що виникають коли перевірка ANY містить операцію порівняння „не дорівнює” <>, можуть бути і в перевірці ALL.

Щоб уникнути таких помилок, слід перевірку ALL перетворити в еквівалентну перевірку на існування (EXISTS) за допомогою перенесення операції порівняння в підлеглий запит, - подібно до того, як це робилося для перевірки ANY:

Завдання із прикладу

93). Вивести прізвища і вік всіх працівників, які не керують філіями, можна переформулювати таким чином:

93’). Вивести прізвище і вік працівників – таких, що для всіх філій: код керівника даної філії відрізняється від коду цього працівника і розв’язати за допомогою перевірки ALL:

93).г). Правильно.



<== предыдущая лекция | следующая лекция ==>
FROM Zamovlennia | FROM Filii


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.446 сек.