Форум: "Базы";
Текущий архив: 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.47 MB
Время: 0.038 c