Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Использование подзапроса возвращающего единственное значение






SELECT b.sys, b.Geometry.STArea(), k.sys

FROM Здания AS b, Кварталы AS k

WHERE b.Geometry.Within(k.Geometry)

AND b.Geometry.STArea()/

(SELECT SUM(b2.Geometry.STArea())

FROM Здания AS b2

WHERE b2.Geometry.STWithin(k.Geometry)) > 0.1

где:

    • конструкция b.Geometry.STArea() возвращает площадь объекта слоя с псевдонимом b;
    • для слоя Здания задается псевдоним b. По этому псевдониму можно обращаться к полям записи запрашиваемой в основной команде выборки;
    • конструкция b.Geometry.Within(k.Geometry) проверяет, располагается ли здание внутри квартала;
    • результатом выполнения вложенного запроса является суммарная площадь зданий в квартале в который входит искомое здание;
    • в подзапросе происходит обращение к объекту слоя Кварталы из основной выборки.

Приведенный запрос находит объекты слоя Здания (или просто здания) располагающиеся внутри объектов слоя Кварталы (кварталов), находится общая площадь зданий в данном квартале и выводятся информация о записях площадь которых больше 10% от общей площади зданий в данном квартале.

Вывод результата подзапроса

SELECT b.sys, b.Geometry.STArea()/(

SELECT SUM(b2.Geometry.STArea()) FROM Здания AS b2

WHERE b2.Geometry.STIntersects(k.Geometry)), k.sys

FROM Здания AS b, Кварталы AS k

WHERE b.Geometry.intersects(k.Geometry)

AND b.Geometry.STArea()/(

SELECT SUM(b2.Geometry.STArea()) FROM Здания AS b2

WHERE b2.Geometry.STIntersects(k.Geometry)) > 0.1

Приведенный запрос аналогичен рассмотренному в предыдущем примере, за тем исключением, в результате выполнения команды выборки выводятся не площади объектов, а их отношение к общей площади объектов в квартале.

  1. Результатом выполнения запроса является список значений. Такие подзапросы используются в качестве операнда оператора проверки значений по списку IN («Задание условий отбора полей»). Подзапросы такого вида должны возвращать список из значений одного поля, либо выражения (после ключевого слова SELECT указывается только одно выражение для вывода).

Использование подзапроса возвращающего список значений

SELECT sys, Улица

FROM Здания

WHERE Улица IN (SELECT Улица from Здания GROUP BY Улица HAVING COUNT(*)> 20)

Запрос возвращает список записей в которых значение поля Улица входит в список улиц имеющих более двадцати записей.

  1. Результатом выполнения подзапроса является любое значение. Такие подзапросы используются в качестве операнда оператора EXISTS проверяющего, вернет ли подзапрос какое-либо значение («Задание условий отбора полей»). На подзапросы такого вида не накладывается никаких ограничений.





© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.