Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите по join [D7, dBase, FoxPro]


Alex_V ©   (2006-01-23 07:19:00) 

Есть запрос, который выбирает данные из четырех таблиц:

SELECT D.LCHET1, D.NCHETA, D3.FAMILY, D3.NAME, D3.FATHER, D.SUMMA, D.METKA, D2.KOD, D2.NM, D1.NM as NM_FIL
FROM ':db_inso:sb_print.dbf' D, ':db_inso:DB1.DBF' D3, ':db_inst:SB_K.DBF' D1, ':db_inst:SB_BANK.DBF' D2
WHERE
(D1.KOD = D.METKA)
AND (D2.KOD = D1.BANK)
AND (D.LCHET1=D3.LCHET)
AND (IST<>'')
AND (d2.kod=:kod)
ORDER BY D1.NM, D3.FAMILY, D.NCHETA

как правильно переписать его с использованием join сколько не пробовал, запрос выполняется тучу времени и толку нет, понимаю что что то не так пишу в условиях, но не пойму где...помогите....И еще замечено что при наличии более 15 с копейками тысяч записей в таблице D и программа вылетает с ошибкой Read from address:00000000...


Alex_V   (2006-01-24 18:33:00) [1]

Да я понял, :) спасибо всем, вроде разобрался я , переписал запрос с явным указанием join и подработал условия и вроде все пошло.... Результат трудов скинуть? мож тогда проанализируем и поймем почему вываливалась ошибка? :)


Desdechado   (2006-01-24 12:03:00) [2]

а зачем 15 тыщ записей на клиенте?

по поводу "убрать поля" - не из таблицы, а из запроса
а потом на клиенте их можно представить Lookup-полями из других справочников


Alex_V   (2006-01-24 09:42:00) [3]

Дык и с псевдонимами работает если в таблице D записей меньше 15300 если больше то все, ошибка....


ASoft   (2006-01-24 07:33:00) [4]

без псевдонимов пробовал?


Alex_V   (2006-01-24 06:24:00) [5]

убрал из запроса текстовые поля, ситуация та же, ошибка осталась, да поясню, с базой я делать ничего не могу, только смотреть изменять ее нельзя, так что добавить поля при всем желании не получится...Или я что то не правильно понял?


ЮЮ   (2006-01-24 06:01:00) [6]

А если убрать "длмнные" текстовые поля D3.FAMILY, D3.NAME, D3.FATHER, D1.NM из SELECT, ситуация изменится? Если да, то добавь Lookup поля для их получения


Alex_V   (2006-01-24 04:23:00) [7]

Доступ через BDE, Table, Query, количество строк в результате <= количеству строк в таблице D, отключение сортировки не помогло, ошибка та же....еще варианты???


Desdechado   (2006-01-23 12:42:00) [8]

компоненты доступа какие?
сколько строк должно быть в результате?
для эксперимента отключи сортировку


Alex_V   (2006-01-23 12:25:00) [9]

ist из таблицы D, переписал с явным указанием join, разобрался вроде, ошибка не прошла....в чем дело не пойму, помогите, работа горит, как только число записей в таблице D меньше чем 15000 с копейками ошибка пропадает....Голова уже набекрень... Access violation at address: 00000000 Read from address: 00000000 Понятно что куда то в память залезает не туда куда нужно, но вот куда понять не могу....Да и почему от кол-ва записей зависит...


Desdechado   (2006-01-23 11:30:00) [10]

> с использованием join
так у тебя и так он используется, только неявно
или тебе внешний джойн нужен?

кстати, IST - из какой таблицы?


Наверх

Титульная страница Поиск, карта сайта Написать письмо