Донецкий техникум промышленной автоматики

вибірка даних

Основним дією виконуваних за допомогою SQL запитів в системі ZuluGIS є вибірка даних для їх виведення у вигляді таблиці в області результатів запиту. Вибірка даних проводиться за допомогою ключового слова SELECT, після якого задаються параметри вибірки. Основним дією виконуваних за допомогою SQL запитів в системі ZuluGIS є вибірка даних для їх виведення у вигляді таблиці в області результатів запиту

Примітка

Як правило, вибірка даних проводиться з записів полів БД шарів карти, але ключове слово SELECT також може використовуватися для виведення в поле результатів обчислення довільних виразів, наведених в рядку після SELECT. Можна одночасно вивести результати обчислення кількох виразів, перерахувавши їх через кому.

Наприклад, команда SELECT "Результати обчислення", 2 + 2, виведе в області результатів таблицю з двох осередків з даними і 4.

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

При запиті даних з одного шару карти, для використання в команді вибірки полів даних досить вказувати тільки їх назви. Якщо ж у вибірці використовуються поля з кількох шарів, то назви полів потрібно вказувати в форматі <Назва шару>. <Назва поля>.

Типовий запит має наступний вигляд:

SELECT <виведені колонки> [FROM <список шарів>] [WHERE <умови відбору>]

де:

SELECT <виведені колонки>

Частина команди вибірки в якій задаються колонки виведеної таблиці даних. В області <виведені колонки> через кому перераховуються назви полів, значення яких виводяться в колонках таблиці, або вирази, результати розрахунку яких виводяться в таблиці ( «Оператори і функції мови SQL» ).

Для виведення в таблиці значень всіх полів даних із зазначених в запиті шарів, задайте замість списку полів символ. В такому випадку, значення полів в таблиці будуть виводитися в тому ж порядку, в якому вони задані в БД.

Для того щоб в підсумковій таблиці виводилися тільки відрізняються один від одного запису, задайте списком полів ключове слово DISTINCT ( «Позбавлення від повторюваних записів» ).

FROM <список шарів>

Частина рядка вибірки в якій через кому перераховуються шари карти з яких запитуються дані.

Якщо всі поля в запиті вказані в форматі <Назва шару>. <Назва поля>, частина запиту з ключовим словом FROM може бути опущена.

Якщо дані запитуються з більш ніж одного шару карти, в підсумковій таблиці буде виведено декартово перетин записів запитаних шарів. Наприклад, в разі запиту полів з двох шарів в підсумковій таблиці буде набір записів з усіма можливими комбінаціями полів із записів першого і другого шару, тобто, наприклад при запиті поля А з шару містить 2 записи і запиті поля B з шару також містить два записи, в підсумковій таблиці буде чотири записи з наступними даними: A1 + B1, A1 + B2, A2 + B1, A2 + B2.

WHERE <умови відбору>

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

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

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

Також в команді вибірки можуть використовуватися різні додаткові команди, що розглядаються в наступних підрозділах.

приклади вибірок

найпростіша вибірка

SELECT * FROM

Квартали

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

Малюнок 486. Приклад виконання запиту

Команда вибірки з перерахуванням необхідних полів

SELECT

Sys, perimeter, [Кількість поверхів] FROM Будинки

В результаті запиту виводиться таблиця з полями Sys, perimeter, Кількість поверхів всіх записів шару Будинки.

Команда вибірки без FROM частини

SELECT

Зданія.Sys, Зданія.Адрес

В даному запиті для всіх полів явно вказано використовуваний шар, тому немає необхідності додатково вказувати шар за допомогою ключового слова FROM.

Вибірка з відбором за умовою

SELECT

[Номер будинку] FROM Будинки WHERE Вулиця = '5й Південний пров.'

В результаті даного запиту виводиться таблиця зі значеннями поля Номер будинку для всіх записів шару Будинки у яких значення поля Вулиця дорівнює рядку 5й Південний пров ..

Вибірка за кількома верствам

SELECT

Квартали.sys, Зданія.Уліца + "" + Будинки. [Номер будинку] FROM Будинки, Квартали WHERE Зданія.Geometry. STWithin (Квартали.Geometry)

В результаті такого запиту будуть відібрані об'єкти шару Будинки розташовуються в об'єктах шару Квартал і буде виведена таблиця з двох стовпців, в першому з яких виводяться поля Sys об'єктів шару Квартал, а в другому - адреси будівель в шарі Будинки поміщаються в зазначених об'єктах шару Квартал. Використовувана в даному запиті конструкція Зданія.Geometry.STWithin (Квартали.Geometry) перевіряє, чи не розташовується об'єкт шару Будинки всередині об'єкта шару Квартали (докладніше «Робота з просторовими даними в запитах» ).