RUS  ENG 

SQL-запросы

Страницы: 1 2 3 4 5 След.
RSS
SQL-запросы
 
Создал группу объектов (к примеру всех отключенных потребителей внутри квартала) при помощи функции Выделить областью а затем Карта-Запрос-Выборка по условию или По атрибутам). Обычным способом, т.е.запросом через базу данных можно производить действия над группой, там все понятно, а вот можно ли производить изменения параметров только для данной группы при помощи SQL_запросов? Там все таки вариативность операций гораздо больше.
 
Используй в параметрах отбора условие "geometry.selected() = 1"
 
я только начал осваивать sql запросы, если можно, напишите пожалуйста как модифицировать данный запрос, чтобы выбрать потребителей с данным условием не по всей карте а из выделенной области (из группы) - SELECT * FROM [voda] WHERE [Расчетный расход воды, л/с]<0.0887
 
Написал вот так и сработало SELECT * FROM [Voda] WHERE geometry.selected() = 1 AND [Расчетный расход воды, л/с]<0.0887

Спасибо!
 
Столкнулся с такой проблемой: при формировании запроса
select Sys, [Улица], [Номер дома], [Корпус], [Этажность],[Тип здания] from [Здания] WHERE [Тип здания] = "Ж"
не могу получить от системы выборку зданий с признаком "Ж", при составлении запроса с этажностью
select Sys, [Улица], [Номер дома], [Корпус], [Этажность] from [Здания] WHERE [Этажность]>2
таже проблема.
В таблицах значения полей тип здания иэтажность брались из справочника. Тип переменных текст и короткое целое.
 
Да, сейчас можно только код из справочника подставлять. Текущая реализация не располагает способом различать что подставлять, код или значение. Позже доработаем
 
В продолжении хочу задать вопрос: как в этом случае пишется запрос?
На запрос:
select Sys, [Улица], [Номер дома], [Корпус], [Этажность] from [Здания] WHERE [Улица] = 11
Получаю ответ:
SQL execution error. Type mismatch in expression. (Код ошибки: 0x8BDE2E5F).
Как оформляется код из справочника?
 
BVG, у нас обнаружилась ошибка при обработке SQL запросов. Однако, пока мы исправляем, ее можно обойти.
Итак, если нужно условие по полю "Тип здания" (подключен справочник) и искать значение "Ж" (допустим код 2), то в SQL запросе сейчас можно обойти так:
WHERE BYREF [Тип здания] = 2.
Если в таблице поле, соответствующее типу здания - числовое, то 2 нужно указывать как есть, а если поле таблицы строковое - то в двойных кавычках.
 
У меня к слою "Здания" прикреплена таблица "Жилые дома" к полям которых прикреплены справочники "Улицы", "Тип здания"

На SQL-запросы получаю ответы
select Sys, [Улица], [Номер дома], [Корпус], [Этажность] from [Здания] WHERE BYREF [Улицы] = 55
ответ: Unresolved symbol 'Улицы'.

select Sys, [Улица], [Номер дома], [Корпус], [Этажность] from [Здания] WHERE BYREF [Тип здания] = 1
ответ: SQL execution error. Type mismatch in expression. (Код ошибки: 0x8BDE2E5F).

select * from [Здания] WHERE BYREF [Тип здания] = "Ж"
формируюся таблица, но ответов в ней нет

select * from [Здания] WHERE BYREF [Улицы] = "Ленина ул."
Unresolved symbol 'Улицы'.

select * from [Здания] WHERE BYREF [Тип здания] <> "Ж"
Выбираются все объекты, в том числе и с кодом 1, который соответствует Ж.

Если что то делаю не так, то готов показать свои действия на копии экрана в Skype. Мой ник vitaly.boytsov
 
У меня стоит задача: высчитать количество строк полей [Текущий расход воды, л/с] не имеющих данных

Составляю запрос:
select count ([Текущий расход воды, л/с]) from [Водопровод] where [Текущий расход воды, л/с] is null
Ответ равен 0, хотя таких полей больше 1000
 
Упростим задачу: хочу узнать сколько потребителей на карте у меня имеется (все потребители имеют заполненное поле по геодезической отметке)
select count([Геодезическая отметка, м]) from [Водопровод]
получаю ответ 6630

на запрос
select count([Текущий расход воды, л/с]) from [Водопровод]
получаю ответ 175
цифра 175 похожа на количество заполненных полей текущего расхода

Выделяю фрагмент карты в котором потребители имеют значения NULL и на запрос
select count ([Текущий расход воды, л/с]) from [Водопровод] where geometry.selected()=1
получаю ответ 0

меняю запрос на
select count ([Геодезическая отметка, м]) from [Водопровод] where geometry.selected()=1
ответ: 878

меняю запрос на
select count (G) from [Водопровод] where geometry.selected()=1
ответ: 0

меняю запрос на
select count ([Геодезическая отметка, м]) from [Водопровод] where [Геодезическая отметка, м] is not null and geometry.selected()=1
ответ: 878

меняю запрос на
select count ([Геодезическая отметка, м]) from [Водопровод] where geometry.selected()=1
ответ: 878

меняю запрос на
select count ([Геодезическая отметка, м]) from [Водопровод] where [Геодезическая отметка, м] is null and geometry.selected()=1
ответ: 0
 
Объясню для чего для меня важно знать работу функции count. У меня крупные потребители заполнены вручную, так же имеется информация о водопотреблении частного сектора. Что бы упростить себе задачу я должен высчитать удельную нагрузку (водопотребление) потребителей частного сектора и присвоить эти значения частным домовладениям
 
BVG, добрый день! Функция COUNT(поле) считает кол-во записей, где данное поле ненулевое. В разделе WHERE указаны дополнительные условия, накладываемые на выборку записей. В Вашем случае замените функцию на COUNT(*), чтобы подсчитывать количество всех записей, удовлетворяющих условию WHERE.
 
Можно ли переговорить по Skype: vitaly.boytsov?

Проблема в том, что выполняя запрос
select count([Текущий расход воды, л/с]) from [Водопровод]
получаю ответ 175, а должен получить 6455!

В моем случае count не считает незаполненные поля
 
BVG, именно! COUNT(выражение) считает количество значений этого выражения! Т.е. игнорируя пустые варианты.
 
Прошу помочь с запросом
select count(*) from [Водопровод] as v, [Территориальное деление земель города] as T_Zone
where typeid=5 and [Текущий расход воды, л/с] is null and
v.geometry.STWithin (T_zone.geometry) and T_Zone = "Малоэтажная застройка"
Ответ: Unresolved symbol 'typeid'.

Я от системы хочу получить ответ: количество записей на слое "Водопровод" имеющих тип Потребитель, в поле которого NULL и данные Потребители территориально находятся на пересекающемся слое "Территориальное деление земель города" с признаком (взятым из библиотеки) = "Малоэтажная застройка"

Заранее благодарю
 
BVG, Вы указали в разделе FROM несколько источников ("Водопровод", "Территориальное деление..."). Вы должны явно указать из какого источника брать атрибут (т.е. v.typeid, v.[Текущий расход воды, л/с]).
 
select count(*) from [Водопровод] as v, [Территориальное деление земель города] as T_Zone
where v.typeid=5 and v.[Текущий расход воды, л/с] is null and
v.geometry.STWithin (T_zone.geometry) and T_Zone.[Территория] = "Малоэтажная застройка"

Спасибо!!!
 
Есть задача: найти все участки водопровода, которые заканчиваются потребителями. Я так понимаю, нужно использовать функцию STIntersects, а аргументами функции должны быть участок (водопровод, тип 8) и потребитель (водопровод, тип 5). Во всех доступных примерах пространственные запросы применяются к объектам, которые принадлежат разным слоям (например, дома и водопровод-потребители). Как сформировать SQL-запрос для разных типов объектов одного слоя?...
 
Данный запрос должен сработать.
Только может выполняться долго, в зависимости от количества объектов в слое.

SELECT b.Sys
FROM [водопровод] as a, [водопровод] as b
WHERE a.typeid=5 AND b.typeid=8 AND a.Geometry.STTouches(b.Geometry)
 
Dmitry, спасибо огромное. Сработало...
 
Добрый день! Подскажите пожалуйста какой запрос нужно написать чтобы перенести адрес из постройки в потребителя, который на ней находится, ну и в дальнейшем слегка модифицируя по аналогии переносить расход и прочие необходимые данные?
 
По поводу предыдущего вопроса вроде разобрался, помог запрос:

UPDATE [voda] SET [voda].[Расход, л/с] = [Постройки].Расход, л/с
FROM [Постройки], [voda]
WHERE [voda].Geometry.STWithin([Постройки].Geometry)

Возник другой вопрос, если на постройке лежит несколько абонентов, можно ли расход из постройки пропорционально разделить на всех абонентов? Если да, то помогите пожалуйста с запросом.
 
запросом можно определить количество абонентов
Код
UPDATE l SET l.[kol-vo]=

(SELECT COUNT(*)
FROM [voda] AS k, [Постройки] AS n
WHERE k.typeid=3 and k.Geometry.STWithin(n.Geometry) and l.sys=n.sys) 

FROM [Здания] AS l
 
Добрый день,хотелось бы узнать,а есть ли способ SQL-запросом переместить данные из одной ячейки в другую, но при этом ячейки находятся в разных слоях. Если это возможно,то хотелось бы узнать каким способом это сделать.
Страницы: 1 2 3 4 5 След.