Страница 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)
..........
..........
));