![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите по 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 - из какой таблицы?