RUS  ENG 

SQL-запросы

Страницы: Пред. 1 2 3 4 5 След.
RSS
SQL-запросы
 
Алексей Аширов, Спасибо за ответ. А планируется в обновлении эту возможность реализовывать?
 
Ilya Yurtaev, да, в будущем планируем реализовать. По срокам пока не можем сказать.
 
Вечер добрый!
На этот раз столкнулись со следующей ошибкой (скрин прилагается).
Слой "...Buffer" импортирован из шейпов. Объекты в нем сделаны типовыми полигонами с прикрепленной базой данных.
При этом ошибка выпадает хоть с БД MS Access, хоть с SQL Server Local DB, а так же не зависимо от того, являются объекты примитивами или же типовыми. В БД слоя 19 полей. Записываемые через запрос поля - Вещественные. Сами шейпы пересохраняли несколько раз.
В чем может быть проблема?
Версия 8.0.0.6913u.
Изменено: Дмитрий Безуглый - 20.12.2018 18:43:51
 
Дмитрий Безуглый, добрый день!
Похоже на нарушение целостности данных. Проверьте, что в обоих(!) слоях подключенные базы работают, и данные в заявленных в них источниках или соединениях доступны.
 
День добрый!
Есть проблема с sql.
1. Первый запрос
Код
DECLARE @QH1 REAL, @QN1 REAL;
SET @QH1=1402.48;
SET @QN1=0;
SET @QN1 = (sel ect count(*) fr om [Cущ водопотребл ЦГВ] as SVCGV, [Районы города] as Zone where SVCGV.Geometry .STWithin(Zone.Geometry) 
and Zone.[Район города] = "Район №1" and SVCGV.typeid=1001);
SELECT @QH1 AS QH1, @QN1 AS QN1;
В двух словах: объявляем две переменные (точнее, одна из них константа), присваиваем им начальные значения. Затем пытаемся найти количество объектов, лежащих в пределах зоны и записать это количество в переменную. Итог:
Код
Type mismatch in expression
2. Пробуем упростить
Код
DECLARE @QH1 REAL, @QN1 REAL;
SET @QH1=1402.48;
SET @QN1=0;
select count(*) fr om [Cущ водопотребл ЦГВ] as SVCGV, [Районы города] as Zone wh ere SVCGV.Geometry .STWithin(Zone.Geometry) 
and Zone.[Район города] = "Район №1" and SVCGV.typeid=1001;
Select тот же, просто не присваиваем значение переменной @QN1. Всё работает. Получаем значение 503, как и должно быть.

Но мне для работы нужна именно переменная. Наставьте, пожалуйста, на путь истинный. sql использую раз в пятилетку... :facepalm:
 
kos103153, переменную QN1 объявите как целую (integer)
 
Дмитрий,день добрый!
За ответ спасибо, но...
Переменная изначально была integer, real - это уже из экспериментов :)
Может быть ещё какие варианты?...
 
kos103153, попробовали на текущей версии на подобных примерах - работает. Обновитесь, если проблема останется, дайте знать.
 
Дмитрий, проблема осталась.
Но есть один нюанс, который я упустил. Мы используем версию 7. Изначально была установлена сборка 7.0.0.6685 от 20.04.2018, обновил до 7.0.0.6753. Проблема осталась.
8-й версии у нас нет :(, поэтому попробовать на ней не могу...
 
kos103153, понятно. Это в 8-й версии работает.
 
Версия 8.0.0.6954u
Дата сборки 14.01.2019
Добрый день.
Необходим совет, как составить запрос чтобы "Наименование узла" из объекта ЦТП проставилось связаному по топологии объекту Потребитель в поле "ЦТП"
Пробовал модифицировать запрос:
SEL ECT b.Sys
FR OM [Тепловая сеть] as a, [Тепловая сеть] as b
WHERE a.typeid=3 AND b.typeid=6 AND a.Geometry.STTouches(b.Geometry)
Результата не добился. Буду благодарен за любую информацию. Спасибо
 
Цитата
Необходим совет, как составить запрос чтобы "Наименование узла" из объекта ЦТП проставилось связаному по топологии объекту Потребитель в поле "ЦТП"
Пробовал модифицировать запрос:
SEL ECT b.Sys
FR OM [Тепловая сеть] as a, [Тепловая сеть] as b
WHERE a.typeid=3 AND b.typeid=6 AND a.Geometry.STTouches(b.Geometry)
Результата не добился. Буду благодарен за любую информацию. Спасибо
В этой же теме 14.12.2018 (https://www.politerm.com/forums/?PAGE_NAME=message&FID=1&TID=3189&TITLE_SEO=3189-sql_zaprosy&MID=13570#message13570) подобный вопрос обсуждался.

Через VbScript можно получить все потребители, связанные с данным ЦТП
1. Поставить на ЦТП флаг (https://politerm.com/zuludoc/index.html#zuluax/NetworkTools_AddFlag.html)
2. Найти всех вниз по течению от флага https://politerm.com/zuludoc/index.html#zuluax/NetworkTools_FindDownstream.html
3. А дальше, либо по одному их надписывать, либо превратить ответ в Selection и выполнить L.ExecSQL для тех, кто потребитель и для тех кто Selected
 
Большое спасибо за ответ. С первыми двумя пунктами разобрался быстро, но к сожалению не могу разобраться с выделением всех ЦТП более практичным решением.
На данный момент выделяю так: L.NetworkTools.AddFlag 10051 но так как наименований 900+ считаю своё решение не совсем корректным.
Также не совсем ясно как ответ превратить в Selection
Пробовал L.Selection.AddElem , но там опять же нужно вводить каждый id. (Справку читал/ю!)
 
Цитата
На данный момент выделяю так: L.NetworkTools.AddFlag 10051 но так как наименований 900+ считаю своё решение не совсем корректным.
Также не совсем ясно как ответ превратить в Selection
Пробовал L.Selection.AddElem , но там опять же нужно вводить каждый id. (Справку читал/ю!)
Результат FindDownStream содержится в https://politerm.com/zuludoc/index.html#zuluax/NetworkTools_Results.html

Вот эту коллекцию сразу и подставлять для создания группы.

https://politerm.com/zuludoc/index.html#zuluax/Selection_ModifyByKeys.html

Понятно, что для тысячи ЦТП быстродействие скрипта не может быть супер, но это быстрее чем руками, линейно зависит от их числа и не требует больших программистских усилий.
Если эта операция важна по скорости и выполняется постоянно, лучше писать уже программу на другом языке в виде плагина или утилиты.

Можно от источника построить дерево, например https://politerm.com/zuludoc/index.html#zuluax/Layer_GetShortWayTree.html

Двигаться от листьев (потребителей) по веткам вверх до ближайшего ЦТП. Тогда за один проход получится массив или файл со списком Потребитель-ЦТП
А уже его одним махом UpdateFromAscII записать в базу.

Но это уж как сможете. 1000 ЦТП не такой объем, чтобы его просто последовательно за несколько минут не обработать.
 
Спасибо ответ, но увы я вновь должен побеспокоить вас.
После
'Находим кратчайший путь
L.NetworkTools.FindDownstream
'Записываем результат
L.Selection.ModifyByKeys 1,L.NetworkTools.Results

Пробую составить :
L.ExecSQL
но не могу составить его корректно.
Также хотелось бы уточнить сработает ли правильно написанный ExecSQL если поле ЦТП в объекте Потребитель выбирается из списка.
Спасибо
 
Для примера как-то так:
Код
Sub UpdateSQL
    
    Set L = Zulu.ActiveMapDoc.Layers.Active
    
   L.ExecSQL "UPDATE SET [Name] = 'aaa' WHERE typeid = 3 AND Geometry.Selected() = 1"
    
End Sub

Насчет списка не очень понял. Если там выпадайка, то сейчас, как минимум работает, если подставлять код значения.
 
Версия 8.0.0.6954u Дата сборки 14.01.2019
Добрый день
Данным запросом меняю одно название на другое в строке [Адрес] в ЦТП.
UPD ATE l SE T l.[Адрес] = replace [Адрес],"Название улицы 1","Название улицы 2")
FROM [Тепловая сеть] AS l
Интересует есть ли возможность заменить "Название улицы 1" на "Название улицы 2" в любой строчке где бы оно не встречалось будь то потребитель/ЦТП./Дом.
Изначальная задача: Убрать дубликаты улиц ( ленина -> Ленина) во всех объектах карты.
Буду благодарен за любую информацию. Спасибо
 
kkk, добрый день!
Указанный оператор делает замену во всех типах объектов, имеющих поле [Адрес]. Если для других типов объектов этого слоя поле звучит иначе, то оператор придётся повторить для этих полей. Также оператор выполняется для конкретного слоя, соответственно для других слоёв его также нужно выполнить отдельно. SQL не подразумевает выполнение операторов с неопределённой группой данных или неопределённым множеством полей.
 
Добрый день.
Версия программы 8.0.0.6935u.

При выполнении запроса:

SEL ECT sys,[Балансодержатель] FR OM [АС Тепло] WHERE [Балансодержатель] NOT LIKE 'ТЭЦ-2'
выходит ошибка:
Syntax error.Text: 'LIKE 'ТЭЦ-2'

'
Pos: 79, Ref: 0xE136

Без оператора NOT - все работает.
Как быть? Обновление поможет?
Изменено: SerPa - 15.02.2019 16:30:09
 
SerPa, добрый день!
Да, у нас ошибка была с конструкцией NOT LIKE.
Мы подправили, в пн. у нас будет новый релиз, там будет отражено.
Приносим извинения за неудобства.
 
Добрый день!

Необходима помощь в формировании Sql-запроса.
Стоит задача перенести информацию из одного слоя тепловых сетей в другой
При выполнении запроса показывает время, но данные не обновляются.
Точки потребителей находятся внутри площадных объектов, значение полей - Строковое.
Версия 8.0.0.6969u
Дата сборки 29.01.2019
Код
UPDATE[Kv_s]SET[Kv_s].[№ п/п]=[Dlya zaprosa].[№ п/п 2018]
WHERE[Kv_s].typeid=5 AND 
[Kv_s].Geometry.STWithin([Dlya zaprosa].Geometry)
 
Оксана, добрый день!
В последнее время мы исправляли ошибки в работе SQL.
Обновите версию, пожалуйста. Если проблема останется, дайте знать.
 
День добрый!
Есть строка [Абонент1] в потребителе, со значениями вида "919 УФМигр.Службы адм.зд. от0.03735 20гр гвс0.019". В разных потребителях соответственно разное название абонента и разное количество знаков.
Пытаюсь запросом получить столбец со значениями после букв "гвс". Логика запроса следующая:
С помощью функции SUBSTRING взять 5 символов из строки [Абонент1] начиная с позиции где функция CHARINDEX найдет вхождение 'гвс'
Код
SEL ECT sys, SUBSTRING([Абонент1], CHARINDEX('гвс',[Абонент1])+3, 5) 
fr om [Тепловая сеть]   
where [Абонент1] LIKE '%гвс%'      

Но чтобы я не делал появляется ошибка:

Unexpected character ')'.

Text: '))+(3),5) FR OM R0DCAF0C8 WH ERE [Абонент1] LIKE "%гвс%"'

Pos: 64, Ref: 0xE205

В чем может быть проблема?

 
Павел, подправили, в текущей версии должно работать.
 
День добрый, коллеги.
Столкнулись со следующей ситуацией (см. скриншот, если потребуются дополнительные сведения, готов предоставить).
Zulu версии:
Версия 8.0.0.7005u
Дата сборки 06.03.2019
Прошу помощи...

PS: полный текст запроса (не всё попало в скрин):
sel ect count(*) fr om [Cущ водопотребл ЦГВ] as
SVCGV, [Районы города] as Zone where SVCGV.Geometry .STWithin(Zone.Geometry)
and Zone.[Район города] = "Район №1" and SVCGV.typeid=1001
Изменено: kos103153 - 24.05.2019 10:16:05
Страницы: Пред. 1 2 3 4 5 След.