ні запитом дані, то ми переходимо до наступної зв'язку фрази links. Це зв'язок успадкування з батьківським класом Стандарт.
6. Для поточного об'єкта класу Шина вибираємо його батьківський об'єкт в класі Стандарт. Так як клас Стандарт має внутрішнє спадкування, то з цього відношенню позначається також вся ієрархія батьківських об'єктів цього класу.
7. Вибираємо поточний об'єкт класу Стандарт.
8. Вибираємо наступні класи, пов'язані ставленням фрази links. Це класи Показники, НормиПродукціі.
9. Для поточного об'єкта класу Стандарт помічаємо всі об'єкти пов'язаних з ним об'єктів цих класів і виводимо в поточний буфер Найменування Стандарту.
10. Для кожного позначеного об'єкта класу Показники і пов'язаного з ним об'єкта класу Норми продукції виводимо в буфер значення полів НаіменованіеПоказателя, НіжняяНорма, ВерхняяНорма, якщо в поточному буфері немає цього показника.
11. Вибираємо в якості поточного наступний позначений об'єкт класу Стандарт, якщо він є, і переходимо до п. 9.
12. Так як результат відповідає всім умовам запиту, то він переноситься в буфер виведення, а поточний буфер очищається.
13. Вибираємо наступний позначений об'єкт класу Шина. Якщо він є, то робимо його поточним і переходимо до п. 6.
14. Якщо його немає, то виконання запиту завершено. Результати запиту знаходяться в буфері виводу.
Запит 2. Для продукції, що входить до групи «Діагональні шини», визначити найменування, позначення, модель, стандарт і значення одного з показників, за яким визначено шлюб (див. рис. 9).
Рис. 9. Схема шарів запиту 2
Зауважимо, що для запису у фразі where умови запиту «значення одного з показників, за яким визначено шлюб» треба не тільки визначити умова на дані об'єктів класів Норми, ПоказателіПаспорта, відповідні об'єкту класу Показники, але і вказати, що умова виконується, якщо знайдеться такий показник. Це вимагає перевірки умови до тих пір, поки не знайдеться такий показник. Тому в запиті вводиться конструкція введення квантора exist: where exist (Показник) with
ВерхняяНорма < ЗначеніеВПаспорте | ЗначеніеВПаспорте < НіжняяНорма
У загальному випадку конструкція фрази where, що додається в мови запитів ODQL і SODQL вигладить наступним чином:
where ... exist (<список об'єктів, для яких визначається виконання умови>) with <умова для даних, пов'язаних з даними списку>
Умова where вважається виконаним, якщо знайдеться такий який вираховується в запиті список об'єктів запиту, для яких умова with виконується. У цьому випадку перевірка умови для інших об'єктів, що визначають цей список даних, відміняється. Умова вважається невиконаним, якщо ні для якого обчислюваного в запиті списку об'єктів воно не виконується.
Аналогічно квантору exist вводиться квантор all:
where ... а11 (<список об'єктів, для яких визначається виконання умови>) with <умова для даних, пов'язаних з даними списку>
У цьому випадку умова where вважається виконаним, якщо для будь-якого обч...