ошибка в запросе SQL

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

ошибка в запросе SQL

Сообщение VAshot » 27.05.2008 18:35:51

вот такая ерунда:
если в запросе есть следующее ввыражение
Код: Выделить всё
CAST(modelofrotor.rlobes as CHAR) || '/' || CAST(modelofrotor.rlobes+1 as CHAR)   lobes


Вылетает "Error code:1".

самое интересное, что это происходит если нет условия "where", если есть, то вроде всё впорядке.
IBExpert работает нормально, а вот с alexDataSet и rxDBGrid (скорее всего и с другими) такая ерунда. FB 2.1.

Код: Выделить всё
modelofrotor.rlobes lobes
отрабатывет нормально.


не подскажите, где бы мог я допустить критическую ошибку? или есть какой-то баг?
Аватара пользователя
VAshot
постоялец
 
Сообщения: 128
Зарегистрирован: 01.11.2007 12:31:21
Откуда: Пермь

Re: ошибка в запросе SQL

Сообщение alexs » 27.05.2008 21:10:59

Ну тыб подробнее структуру расписал таблиц. Что преобразовываеш?
p.s.
Я ещё на птицу 2.1 не переполз :(
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: ошибка в запросе SQL

Сообщение Сергей Смирнов » 27.05.2008 22:23:01

VAshot писал(а):самое интересное, что это происходит если нет условия "where", если есть, то вроде всё впорядке.
Ну так наверное в данных дырка? Например где-то modelofrotor.rlobes равен NULL. А вообще, присоединяюсь к предыдущему оратору: CREATE TABLE - в студию!

Добавлено спустя 10 минут 13 секунд:
alexs писал(а):Я ещё на птицу 2.1 не переполз :(
Получишь массу неизгладимых ощущений. Начиная с каких-то странных проблем преобразования кодировок после рестора при переходе к новой ODS и кончая траблами с кривыми параметрами транзакций (а они по умолчанию очень во многих компонентах как раз кривые и UIB не исключение).
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Re: ошибка в запросе SQL

Сообщение alexs » 27.05.2008 22:36:56

Сергей Смирнов писал(а):Получишь массу неизгладимых ощущений. Начиная с каких-то странных проблем преобразования кодировок после рестора при переходе к новой ODS и кончая траблами

Это я уже вкусил по полной программе. Именно из-за этого и не переползаю.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: ошибка в запросе SQL

Сообщение VAshot » 28.05.2008 07:19:48

Да с данными-то всё должно быть в порядке, иначе бы и IBExpert ругался, да и на полях ограничение на уникальность и не пустоту стоит в нужных местах (в том числе и на это поле)
rlobes - это integer

Запрос (просьба, не говорить о алиасах):
Код: Выделить всё
select
   resultdata_id,
   servicetest_id,
   rotor_numberrt,
   rotor_modification,
   stator_numberst,
   stator_modification,

   diametretype,
   lobes,
   lengthtype,
   assignflowrate,
   statordiametremiddle-rotordiametremiddle   natjagP,
   statordiametremiddlev-rotordiametremiddle   natjagV,

   rotor_numberrt ||'-'|| CAST(rotor_modification as CHAR)      rotorM,
   rotorlabelcompany,
   depositlabelcompany,
   stator_numberst ||'-'|| CAST(stator_modification as CHAR)   statorM,
   statorlabelcompany,

        numbert,
   twaindatecreate,

   sborkat,
   numberaggregate,

   typetest,
   quality,
   datetest

from
(
select
   resultdata.ResultData_id            resultdata_id,
   resultdata.assignflowrate,
   servicetest.ServiceTest_id            servicetest_id,
   servicetest.datetest,
   typeservicetest.typetest,
   quality.quality,
   aggregate.sborkat,
   aggregate.numberaggregate,
   workertwain.numbert,
   workertwain.labelt,
   rotor.producer_id               rotorproducer_id,
   modificationofrotor.currentproducerofdeposit_id      depositproducer_id,
   stator.producer_id                              statorproducer_id,
   rotorproducer.labelcompany            rotorlabelcompany,
   depositproducer.labelcompany            depositlabelcompany,
   statorproducer.labelcompany                   statorlabelcompany,
   modelofrotor.dimensiontype_diametretype         diametretype,
   modelofrotor.dimensiontype_lengthtype         lengthtype,
CAST(modelofrotor.rlobes as CHAR) || '/' || CAST(modelofrotor.rlobes+1 as CHAR)  lobes,
/*   modelofrotor.rlobes         lobes,*/
   modificationofrotor.modification         rotor_modification,
   modificationofstator.stator_numberst,
   modificationofstator.modification         stator_modification,
   modificationofrotor.diametremiddle         rotordiametremiddle,
   modificationofrotor.rotor_numberrt,
   modificationofstator.diametremiddle         statordiametremiddle,
   modificationofstator.diametremiddlev         statordiametremiddlev,
   workertwain.twaindatecreate
/
from servicetest
   inner join workertwain         on (workertwain.workertwain_id            = servicetest.workertwain_id)
   left  join aggregate         on (workertwain.workertwain_id            = aggregate.workertwain_id)

   inner join resultdata         on (servicetest.ServiceTest_id            = resultdata.servicetest_id)
   inner join modificationofrotor      on (workertwain.modificationofrotor_id         = modificationofrotor.ModificationOfRotor_id)
   inner join rotor         on (modificationofrotor.rotor_numberrt         = rotor.numberrt)
   inner join modelofrotor         on (rotor.modelofrotor_id            = modelofrotor.modelofrotor_id)
   inner join modificationofstator      on (workertwain.modificationofstator_id         = modificationofstator.ModificationOfStator_id)
   inner join stator         on (modificationofstator.stator_numberst      = stator.numberst)
   inner join modelofstator      on (stator.modelofstator_id            = modelofstator.modelofstator_id)
   inner join typeservicetest      on (servicetest.typeservicetest_id         = typeservicetest.TypeServiceTest_id)
   inner join quality         on (servicetest.quality_id            = quality.Quality_id)
   left  join producer rotorproducer   on (rotor.producer_id               = rotorproducer.producer_id)
   left  join producer statorproducer   on (stator.producer_id               = statorproducer.producer_id)
   left  join producer depositproducer   on (modificationofrotor.currentproducerofdeposit_id   = depositproducer.producer_id)

@macrosWHERE
)



Да, уж. Похоже зря я на 2.1 перешел. Вроде раньше не было такого (хотя данные были тестовые, может не всё предусмотрел).
А что за траблы? если изначально работать в 2.1 проблемы серъезны?
Аватара пользователя
VAshot
постоялец
 
Сообщения: 128
Зарегистрирован: 01.11.2007 12:31:21
Откуда: Пермь


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

Рейтинг@Mail.ru