Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2010, 18:06   #1
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию left join странная ошибка

здравствуйте!

Код:
select m_o.date_nakladn, m_o.nakladn, com_pr.payersnames, SKL_CUS_D_DRIVER.name, m_op_ad.float_field18,
m_op_ad.float_field16, SKL_CUS_D_OTPR_PLOTN.name as plotn, m_op.summa_mc_plus, SKL_CUS_D_TERMSTAB.name as termo
FROM MKK_DOBVED MY, COM_DOCUMENTSREESTR COM_DR
LEFT JOIN M_ORDERS M_OO ON M_OO.ID=MY.ID_ORDER
LEFT JOIN M_ORDERS M_O ON M_O.ID_DOC_REESTR=COM_DR.ID
LEFT JOIN M_ORDERS_ADDITIONAL M_O_A ON M_O_A.ID_ORDER=M_O.ID
LEFT JOIN M_OPERATIONS M_OP ON M_OP.ID_ORDERS=M_O.ID
LEFT JOIN M_OPERATIONS_ADDITIONAL M_OP_AD ON M_OP_AD.ID_OPERATION=M_OP.ID
LEFT JOIN COM_PAYERSRECIVER SKL_CUS_D_FARM ON SKL_CUS_D_FARM.ID=M_O_A.ID_VAL_FIELD2
LEFT JOIN SKL_CUSTOM_DICTIONARY SKL_CUS_D_SORT ON SKL_CUS_D_SORT.ID=M_OP_AD.ID_VAL_FIELD1
LEFT JOIN SKL_CUSTOM_DICTIONARY SKL_CUS_D_SORT_OTPR ON SKL_CUS_D_SORT_OTPR.ID=M_OP_AD.ID_VAL_FIELD9
LEFT JOIN SKL_CUSTOM_DICTIONARY SKL_CUS_D_CHISTOTA ON SKL_CUS_D_CHISTOTA.ID=M_OP_AD.ID_VAL_FIELD3
LEFT JOIN SKL_CUSTOM_DICTIONARY SKL_CUS_D_BAK_OBSEM ON SKL_CUS_D_BAK_OBSEM.ID=M_OP_AD.ID_VAL_FIELD4
LEFT JOIN SKL_CUSTOM_DICTIONARY SKL_CUS_D_PLOTN ON SKL_CUS_D_PLOTN.ID=M_OP_AD.ID_VAL_FIELD5
LEFT JOIN SKL_CUSTOM_DICTIONARY SKL_CUS_D_SOM_KLET ON SKL_CUS_D_SOM_KLET.ID=M_OP_AD.ID_VAL_FIELD6
LEFT JOIN SKL_CUSTOM_DICTIONARY SKL_CUS_D_OTPR_PLOTN ON SKL_CUS_D_OTPR_PLOTN.ID=M_OP_AD.ID_VAL_FIELD7
LEFT JOIN SKL_CUSTOM_DICTIONARY SKL_CUS_D_OTPR_CHIST ON SKL_CUS_D_OTPR_CHIST.ID=M_OP_AD.ID_VAL_FIELD8
LEFT JOIN SKL_CUSTOM_DICTIONARY SKL_CUS_D_DRIVER ON SKL_CUS_D_DRIVER.ID=M_O_A.ID_VAL_FIELD3
LEFT JOIN SKL_CUSTOM_DICTIONARY SKL_CUS_D_TERMSTAB ON SKL_CUS_D_TERMSTAB.ID=M_OP_AD.ID_VAL_FIELD10
LEFT JOIN SKL_CUSTOM_DICTIONARY SKL_CUS_D_ORGLEPT ON SKL_CUS_D_ORGLEPT.ID=M_OP_AD.INTEGER_FIELD2
LEFT JOIN SKL_CUSTOM_DICTIONARY SKL_CUS_D_INGIB ON SKL_CUS_D_INGIB.ID=M_OP_AD.INTEGER_FIELD3
LEFT JOIN COM_ZONES COM_Z ON COM_Z.ID=M_O_A.ID_VAL_FIELD1
LEFT JOIN COM_PAYERSRECIVER COM_PR ON COM_PR.ID=M_O.ID_PAYERSRECIVER
Where
(
(COM_DR.VID_DOC_ID IN(50031,50032,50046))
and
(COM_DR.DOCDATA BETWEEN :p1 AND :p2 )
and
(m_o.id_mol = 3641)
)
прекрасно работает без выделенного кода, а как только я добавляю его, то выскакивает ошибка (the cursor identified in the update or delete statement is not positioned on a row no current record for fetch operation)

мне нужно чтобы данные из табл. MKK_DOBVED выбирались этим же запросом
скажите, пожалуйста, в чем ошибка
pobedin вне форума Ответить с цитированием
Старый 23.06.2010, 18:13   #2
Error_kpi
Пользователь
 
Регистрация: 23.06.2010
Сообщений: 17
По умолчанию

Цитата:
FROM MKK_DOBVED MY, COM_DOCUMENTSREESTR COM_DR
Тут кажется чегото нехватает MKK_DOBVED MY и тут COM_DOCUMENTSREESTR COM_DR. Может "_"

Последний раз редактировалось Error_kpi; 23.06.2010 в 18:16.
Error_kpi вне форума Ответить с цитированием
Старый 23.06.2010, 18:42   #3
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

надо писать хотя бы так
Код:
FROM COM_DOCUMENTSREESTR COM_DR, 
         MKK_DOBVED MY LEFT JOIN M_ORDERS M_OO ON M_OO.ID=MY.ID_ORDER
красным выпрямлена очередность указания таблиц, а зеленым указаны джойнящиеся таблицы, но у меня есть сомнения - а не поменять ли их местами друг с другом
soleil@mmc вне форума Ответить с цитированием
Старый 24.06.2010, 09:43   #4
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию

не работает не такой вариант :
Код:
FROM COM_DOCUMENTSREESTR COM_DR, 
M_ORDERS M_OO LEFT JOIN MKK_DOBVED MY  ON MY.ID_ORDER=M_OO.ID
и не такой :
Код:
FROM COM_DOCUMENTSREESTR COM_DR, 
MKK_DOBVED MY LEFT JOIN M_ORDERS M_OO ON M_OO.ID=MY.ID_ORDER
в итоге все та же ошибка
если right сделать и поменять местами, то запрос выполняется, но ничего не находит. таблица MKK_DOBVED пуста, но должно-то выбрать все записи из другой...

Последний раз редактировалось pobedin; 24.06.2010 в 10:40.
pobedin вне форума Ответить с цитированием
Старый 24.06.2010, 12:25   #5
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

вы мне предлагаете разобраться в этой портянке?
и даже без схемы структуры бд?!

я просто указал на очевидный баг - указано внешнее объединение, в котором перечислены таблицы, которые в свою очередь во фразе "фром" указаны не в том порядке

пробуйте писать запрос с нуля, добавляя новые связки таблиц
но имхо чота многовато у вас внешних объединений - наводит на мысль кач-во проектирования структуры бд
soleil@mmc вне форума Ответить с цитированием
Старый 24.06.2010, 12:35   #6
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию

решил добавлением нужных полей одной таблицы в другую.
спасибо. тему можно закрывать.
pobedin вне форума Ответить с цитированием
Старый 24.06.2010, 13:48   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

выскакивает ошибка (the cursor identified in the update or delete statement is not positioned on a row no current record for fetch operation)

FROM MKK_DOBVED MY, COM_DOCUMENTSREESTR COM_DR
LEFT JOIN M_ORDERS M_OO ON M_OO.ID=MY.ID_ORDER

проверь данные в запросе не уникальны по выделенному полю
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странная ошибка Dux SQL, базы данных 5 23.03.2010 12:16
LEFT JOIN acidcool SQL, базы данных 12 20.08.2009 19:23
Ошибка MySQL при WHERE left = 0 Alternavi SQL, базы данных 2 14.06.2009 15:42
Ошибка Left Side cannot be assigned to.. DM_bite Помощь студентам 1 18.09.2008 21:01
Странная ошибка Washington БД в Delphi 2 16.03.2007 18:13