Основним дією виконуваних за допомогою SQL запитів в системі ZuluGIS є вибірка даних для їх виведення у вигляді таблиці в області результатів запиту. Вибірка даних проводиться за допомогою ключового слова SELECT, після якого задаються параметри вибірки.
Примітка
Як правило, вибірка даних проводиться з записів полів БД шарів карти, але ключове слово 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. Приклад виконання запиту
Команда вибірки з перерахуванням необхідних полів
SELECTSys, perimeter, [Кількість поверхів] FROM Будинки
В результаті запиту виводиться таблиця з полями Sys, perimeter, Кількість поверхів всіх записів шару Будинки.
Команда вибірки без FROM частини
SELECT
Зданія.Sys, Зданія.Адрес
В даному запиті для всіх полів явно вказано використовуваний шар, тому немає необхідності додатково вказувати шар за допомогою ключового слова FROM.
Вибірка з відбором за умовою
SELECT
[Номер будинку] FROM Будинки WHERE Вулиця = '5й Південний пров.'
В результаті даного запиту виводиться таблиця зі значеннями поля Номер будинку для всіх записів шару Будинки у яких значення поля Вулиця дорівнює рядку 5й Південний пров ..
Вибірка за кількома верствам
SELECT
Квартали.sys, Зданія.Уліца + "" + Будинки. [Номер будинку] FROM Будинки, Квартали WHERE Зданія.Geometry. STWithin (Квартали.Geometry)
В результаті такого запиту будуть відібрані об'єкти шару Будинки розташовуються в об'єктах шару Квартал і буде виведена таблиця з двох стовпців, в першому з яких виводяться поля Sys об'єктів шару Квартал, а в другому - адреси будівель в шарі Будинки поміщаються в зазначених об'єктах шару Квартал. Використовувана в даному запиті конструкція Зданія.Geometry.STWithin (Квартали.Geometry) перевіряє, чи не розташовується об'єкт шару Будинки всередині об'єкта шару Квартали (докладніше «Робота з просторовими даними в запитах» ).