Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LECTIONS_BDBZ.doc
Скачиваний:
20
Добавлен:
16.12.2018
Размер:
1.63 Mб
Скачать

9.2. Обмеження на умову відбору груп

Секція HAVING використовується для того, щоб включати і виключати групи рядків із результатів запиту, тому умова відбору застосовується не до окремих рядків, а до групи в цілому.

Це означає, що в умову відбору груп може входити:

  • константа;

  • статистична функція, яка повертає одне значення для всіх рядків, що входять у групу;

  • стовпчик групування, який за означенням має одне і те саме значення у всіх рядках групи;

  • вираз, який складається із всіх вищевказаних елементів.

На практиці умова відбору в секції HAVING завжди повинна містити як мінімум одну статистичну функцію.

Якщо це не так – то таку умову можна перемістити в секцію WHERE. Щоб визначити, де слід вказувати умову відбору – в секції WHERE чи в секції HAVING – треба згадати як вони застосовуються:

  • секція WHERE застосовується до окремих рядків – умова секції WHERE щоразу обчислюється для кожного окремого рядка. Статистичні функції не можуть входити в умову секції WHERE.

  • секція HAVING застосовується до груп рядків, тому умова секції HAVING обчислюється для кожної групи – один раз для усієї групи.

Значення null і умови відбору груп

Як і в секції WHERE, умова відбору в секції HAVING може дати один із наступних результатів:

  • якщо умова отримує значення TRUE, то така група рядків залишається і для неї генерується один єдиний рядок таблиці результатів запиту.

  • якщо умова отримує значення FALSE або NULL – то група рядків ігнорується і для такої групи ніякий рядок таблиці результатів не створюється.

Правила опрацьовування значень NULL в умовах відбору для секції HAVING – ті самі, що і для секції WHERE.

Секція having без секції group by

Секції HAVING майже завжди використовується разом із секцією GROUP BY, але синтаксис оператора SELECT цього не вимагає.

Якщо секції HAVING використовується без секції GROUP BY, СУБД вважає всі результати запиту однією групою. Тобто, статистичні функції, вказані в секції HAVING, застосовуються до однієї і лише однієї групи і ця група складається із усіх рядків.

На практиці секція HAVING дуже рідко використовується без відповідної секції GROUP BY.

Лекція №15. Складні умови відбору. Використання логічних виразів.

Складні умови відбору у запитах на вибірку даних Використання логічних виразів

Складні логічні вирази будуються за допомогою операцій AND,OR і NOT.

Їх використання, а також побудова за їх допомогою складних виразів визначається стандартними правилами, які прийняті в більшості алгоритмічних мов (в т.ч. Pascal).

В стандарті SQL є один дуже важливий виняток з цих правил: операції відношення в SQL мають більший пріоритет, ніж логічні операції, - це звільняє від необхідності розставляти багато дужок.

*! Значення NULL впливають на інтерпретацію складних умов відбору, внаслідок чого результати останніх стають не такими очевидними.

Операція OR використовується для об’єднання двох умов, із яких як мінімум одна повинна бути істинною.

Для об’єднання двох умов, обидві із яких повинні бути істинними, потрібно використовувати операцію AND.

Операція NOT використовується для вибору рядків, для яких умова відбору хибна.

Якщо за допомогою операцій AND, OR і NOT об’єднуються більш, ніж дві умови відбору, то згідно стандарту SQL: операція NOT має найвищий пріоритет, наступний пріоритет має операція AND, операція OR має самий низький пріоритет. Але, щоб гарантувати правильне виконання SQL – запиту на будь-якій платформі, потрібно використовувати круглі дужки – це дозволить усунути всі можливі неоднозначності.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]