Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.03 c
1-1080715307
nine_inch_nails
2004-03-31 10:41
2004.04.18
Копирование в clipboard


3-1079528649
incm
2004-03-17 16:04
2004.04.18
Как отследить изменение данных другой прогой


1-1080729251
freeek
2004-03-31 14:34
2004.04.18
PainBox


6-1076900173
Alek Aaz
2004-02-16 05:56
2004.04.18
DNS кэш


3-1079894810
Игорь
2004-03-21 21:46
2004.04.18
Запрос по таблице в памяти





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский