Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: CL | DM;

Вниз

BDE, базы данных   Найти похожие ветки 

 
Olsab   (2004-03-23 16:09) [0]

Уважаемые Мастера!
D5,DBASE, BDE  
 Есть SQL-запрос, который связывает 9 файлов. В зависимости от условий ограничения, выводится разное кол-во записей. На небольших таблицах запрос работает без замечаний, а при увеличении кол-ва записей в таблицах, он перестает работать, реагирует на кол-во выводимых полей и на кол-во связаных таблиц. Выдает ошибку
Access violation at address 00000000 read address 00000000 .
Создается впечатление, что переполняется какой-то буфер. Может кто сталкивался с такой проблемой?


 
Alex_Bredin ©   (2004-03-23 16:11) [1]

такая ошибка не появляется от увеличения количества записей


 
olsab   (2004-03-23 16:17) [2]

Грешить больше не на что. Запрос выполнялся на проверенных данных(которые были тиражируемые, чтобы достичь большего кол-ва записей), выполнялся просто в SQL-Explorer -е


 
Alex_Bredin ©   (2004-03-23 16:21) [3]

приведите текст запроса


 
olsab   (2004-03-23 16:23) [4]

Используется локальный SQL не FOXPRO


 
olsab   (2004-03-23 16:27) [5]

SELECT Bxd.NK, Sp.NAME, Bxd.DAR,Vid.NAME+" "+ Bxd.NOM  vid,
Bxd.DAI, Bxd.ORG, Bxd.OTPR, City.NAME city, Bxd.SOD, Bxd.DAV, Bxd.NKS,
Bxd.KONT, Bxd.YE, Bxd.KVID, Bxd.NOM, Bxd.ISXN, Bxd.KSP, Bxd.KCITY,
Bxd.OTM, Bxd.KKUR, Bxd.DATK, Bxd.KTEMA, Skur.NAME kur, Tema.NAME tema,
Bxd.KORG, Org.NAME org_1, Bxd.KDEL, Delo.NAME1 delo, Vid.NAME vidd
FROM "BXD.DBF" Bxd,"CITY.DBF" City,"SP.DBF" Sp,"SKUR.DBF" Skur,
 "TEMA.DBF" Tema,"ORG.DBF" Org,"DELO.DBF" Delo,
 "VID.DBF" Vid
where
   (Bxd.KCITY = City.KOD) and
   (Bxd.KVID = Vid.KOD)  and
   (Bxd.KSP = Sp.KOD)  and
   (Bxd.KKUR = Skur.KOD)  and
   (Bxd.KTEMA = Tema.KOD)  and
   (Bxd.KORG = Org.KOD)  and
   (Bxd.KDEL = Delo.KOD)
 and bxd.otm=1
Одна таблица связывается с 7-ю справочниками для расшифровки кодов и выбираюся, например, выполненные документы(bxd.otm=1)


 
Alex_Bredin ©   (2004-03-23 16:31) [6]

используйте JOIN..ON вместо WHERE
это реакция на NULL в ключевом поле


 
olsab   (2004-03-23 16:36) [7]

В DBASE NULL нет по определению, там в незаполненные поля ставится 0, а в справочниках заведены записи с нулевым значением для того, чтобы было точное соответствие и не надо было писать LEFT OUTER JOIN.
 С INNER JOIN аналогичная ситуация - выдает ошибку


 
Alex_Bredin ©   (2004-03-23 16:50) [8]


> В DBASE NULL нет по определению, там в незаполненные поля
> ставится 0


первый раз слышу


 
Alex_Bredin ©   (2004-03-23 16:52) [9]

да у вас и с именами путаница - DELO например  и поле и таблица


 
Johnmen ©   (2004-03-23 16:54) [10]

>olsab   (23.03.04 16:27) [5]

Т.е. приведенный запрос иногда всё-таки работает ?


 
olsab   (2004-03-23 16:56) [11]

Поля Delo нет только таблица, а в списке полей это же алиасное имя, оно то особой роли не играет.


 
Alex_Bredin ©   (2004-03-23 17:04) [12]

SELECT Bxd.NK, Sp.NAME, Bxd.DAR,Vid.NAME+" "+ Bxd.NOM,
Bxd.DAI, Bxd.ORG, Bxd.OTPR, City.NAME , Bxd.SOD, Bxd.DAV, Bxd.NKS,
Bxd.KONT, Bxd.YE, Bxd.KVID, Bxd.NOM, Bxd.ISXN, Bxd.KSP, Bxd.KCITY,
Bxd.OTM, Bxd.KKUR, Bxd.DATK, Bxd.KTEMA, Skur.NAME kur, Tema.NAME ,
Bxd.KORG, Org.NAME , Bxd.KDEL, Delo.NAME1 , Vid.NAME

FROM Bxd
left join City on (Bxd.KCITY = City.KOD)
left join Vid on  (Bxd.KVID = Vid.KOD)
left join Sp on   (Bxd.KSP = Sp.KOD)  
left join Skur on (Bxd.KKUR = Skur.KOD)
left join Tema on (Bxd.KTEMA = Tema.KOD)
left join Org on  (Bxd.KORG = Org.KOD)
left join Delo on (Bxd.KDEL = Delo.KOD)

where Bxd.otm=1

уфф.
попробуйте


 
olsab   (2004-03-23 17:25) [13]

С последней версией запроса работает, но с добавлением записей в таблице до 70000, вываливается по той же ошибке.
У меня закончился инет. Спасибо


 
Alex_Bredin ©   (2004-03-23 17:32) [14]

тогда еще вариант - поменять местами поля вот так:

FROM Bxd
left join City on (City.KOD =Bxd.KCITY)
left join Vid on  (Vid.KOD = Bxd.KVID ) итп

не знаю почему, но в некотроых случаях порядок полей в условии иимеет значение



Страницы: 1 вся ветка

Текущий архив: 2004.04.18;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.024 c
3-1080099460
Andy 1
2004-03-24 06:37
2004.04.18
Excel


9-1066389446
Landgraph
2003-10-17 15:17
2004.04.18
Подскажите, пожалуйста, ссылку =)


3-1079589072
Nax
2004-03-18 08:51
2004.04.18
Два вопроса по синтаксису TQuery.SQL


3-1079946868
stas
2004-03-22 12:14
2004.04.18
Запрет изменения поля с помощью триггера


9-1066645311
MozG
2003-10-20 14:21
2004.04.18
Еще один вопрос, как сделать дым за каждой рокетой