русс | укр

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

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

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

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


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

FROM Zamovlennia


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


WHERE Pracivnyk = Kod_Pracivnyka)

Pracivnyky
Kod_Pracivnyka . . . Plan . . .
       

 
 
1 : N (=)

 


Zamovlennia
Kod_Zamovlennia . . . Pracivnyk . . . Vartist . . .
           

 

Головний запит по черзі перевіряє всі рядки таблиці Pracivnyky. Підлеглий запит знаходить всі замовлення, прийняті „біжучим” працівником, і повертає стовпчик, який містить вартості цих замовлень.

Секція WHERE головного запиту обчислює 10% від плану біжучого працівника і порівнює це число із вартістю кожного замовлення, відібраного підлеглим запитом. Якщо є хоча би одне замовлення, вартість якого більша 10% від плану працівника, то перевірка < ANY повертає значення, і прізвище такого працівника заноситься в таблицю результатів головного запиту.

Якщо ж таких замовлень немає, то прізвище працівника в таблицю результатів не попадає.

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

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

WHERE X < ANY (SELECT Y . . .)

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

„де X менше, чим будь-який вибраний Y. . .”,

а так: Y : X<Y

„де для існує деякого Y: X менше, чим Y. . .”

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

92). Вивести список працівників, у яких для деякого існує замовлення, прийняте ними, таке що 10% від планового об’єму продаж цього працівника менше, ніж вартість цього замовлення.

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



Стандарт SQL задає правила, які визначаються результати перевірки ANY:

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

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

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

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

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

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

93).а). Неправильно!



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


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


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

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

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


 


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

 
 

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

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