Страница 2 из 2
Добавлено: 17 ноя 2009, 11:17
korvanakorvana
Код: Выделить всё
create view
var
date1, dat1, date2, dat2, date3, dat3:date;
XlRes: Boolean;
aFileName: String;
as
Select *
From
basefin,
basedoc,
stepdoc,
katsopr,
katmc katmc1,
tkvart,
t_katmc _katmc
, KatMC
, t_katmc
, t_bf
, t_do
, toplat
Where
((
katmc.nrec==_katmc.nrec
//and 10051==basefin.tipdoc
//только по платежным поручениям
and 1==basefin.direct
and 2==basefin.tidkgal(noindex)
//and '2909'==basefin.nodoc(noindex)
and dat1<<=basefin.ddoc
and dat2>>=basefin.ddoc(noindex)
and basefin.cbasedoc==basedoc.nrec
and word(201)==basedoc.viddoc(noindex)
and dat3<<=basedoc.ddoc(noindex)
and basedoc.nrec==stepdoc.cbasedoc
and stepdoc.nrec==katsopr.cstepdoc
and katsopr.cstepdoc == basefin.cstepdoc
and katsopr.nrec == spsopr.csopr
and 1 == spsopr.prmc
and spsopr.cmcusl == katmc1.nrec
));
Этот запрос не работает(((...
ошибка

Добавлено: 17 ноя 2009, 11:47
Алексей
может вы уже научитесь заходить в саппорте в модуль SQL искать там таблицу и по таблице смотреть возможные индексы?
Добавлено: 17 ноя 2009, 11:49
Алексей
and katsopr.cstepdoc == basefin.cstepdoc это что?
Добавлено: 17 ноя 2009, 12:05
edward_K
это ссылка на ахронизм.
basedoc ( ДО) не ссылается напрямую в накладной
katsopr.cstepdoc == stepdoc.nrec
and stepdoc.cbasedoc == basedoc.nrec
Добавлено: 17 ноя 2009, 12:08
korvanakorvana
а я там все это дело смотрю... только не понимаю некоторые привязки...
Добавлено: 17 ноя 2009, 12:25
edward_K
угу давным давно в качестве договоров подразумевалось использовать ДО, соотв. к ним сделали этапы(stepdoc), но в жизнь это не пошло, а транзит остался (к тому же там часть полей до сих пор используется).
да строка
and katsopr.cstepdoc == basefin.cstepdoc в вашем случае лишняя
вы приоритеты ставте то, домысливать за вас никто не будет
главная у вас basefin -к ней basedoc - katsopr
вы же попытались katsopr подчинили basefin и зациклили запрос. Можно было бы без basedoc обойтись для скорости- тока таблы в этом условии местами то нужно поменять - дочерние таблы в индексных условиях всегда справа, условия на них слева
Добавлено: 17 ноя 2009, 12:29
Masygreen
смотрите ошибку - если не можете найти связку по ключам,или оптимизировать запрос ставите (noindex) где всплыла ошибка (ошибка говорит что по вашим условиям индекса не найдено) .. для вашего принскрина
проставляете справа от связок где присутствует basefin с полями direct,ddoc,cstepdoc
Добавлено: 17 ноя 2009, 14:14
korvanakorvana
еще один глупейший вопросик) ....
Как сделать условие чтоб basefin.tidkgal(noindex) была = и 1 или 2??

Добавлено: 17 ноя 2009, 14:54
Den
Никогда не пробовали почитать доку по программированию на vip ?
Там в разделе "Работа с БД" описана "Конструкция where"...
Добавлено: 17 ноя 2009, 16:01
Алексей
where (
........
........
and
( basefin.tidkgal=1 OR basefin.tidkgal=2)
..........
..........
));