|
v7: запутался с join ₽ |
☑ | ||
|---|---|---|---|---|
|
0
dsultan
14.04.08
✎
16:48
|
подключаюсь к dbf через microsoft.jet
запутался в joinах, вот что выдает Ошибка синтаксиса (пропущен оператор) в выражении запроса 'ttl.ACCID = accs.ID INNER JOIN 1SACCS AS accs2 ON accs.SCHKOD >= accs2.SCHKOD'. если убрать второй джойн - не ругается где собака? SELECT ttl.ACCID AS schet, ttl.CURRID AS valut, iif(ttl.VSC0 = ' EL',ttl.SC0,iif(ttl.VSC1 = ' EL',ttl.SC1, iif(ttl.VSC2 = ' EL',ttl.SC2,0))) AS sk1, iif(KIND = '1',ttl.SD ,0) AS sumost, iif(KIND = '2',ttl.SD,0) AS valsumost, iif(KIND = '3',ttl.SD,0) AS kolost FROM 1SBKTTL AS ttl INNER JOIN 1SACCS AS accs ON ttl.ACCID = accs.ID INNER JOIN 1SACCS AS accs2 ON accs.SCHKOD >= accs2.SCHKOD AND LEFT(accs.SCHKOD,LEN(accs2.SCHKOD)) = accs2.SCHKOD AND accs.PLANID = 809 AND accs2.ID = ' 1V ' WHERE (ttl.date = #1/1/2008#) AND (ttl.KIND IN ('1', '2', '3')) AND (' EL' IN (ttl.VSC0, ttl.VSC1, ttl.VSC2)) |
|||
|
1
sapphire
14.04.08
✎
16:54
|
Попробуй, если ты используешь INNER JOIN
использовать select ... from {перечень таблиц} where {условие выборки} AND {условия соединений} |
|||
|
2
sapphire
14.04.08
✎
16:56
|
SELECT ttl.ACCID AS schet, ttl.CURRID AS valut,
iif(ttl.VSC0 = ' EL',ttl.SC0,iif(ttl.VSC1 = ' EL',ttl.SC1, iif(ttl.VSC2 = ' EL',ttl.SC2,0))) AS sk1, iif(KIND = '1',ttl.SD ,0) AS sumost, iif(KIND = '2',ttl.SD,0) AS valsumost, iif(KIND = '3',ttl.SD,0) AS kolost FROM 1SBKTTL AS ttl, 1SACCS AS accs, 1SACCS AS accs2 WHERE ((ttl.date = #1/1/2008#) AND (ttl.KIND IN ('1', '2', '3')) AND (' EL' IN (ttl.VSC0, ttl.VSC1, ttl.VSC2))) AND ( accs ON ttl.ACCID = accs.ID AND accs.SCHKOD >= accs2.SCHKOD AND LEFT(accs.SCHKOD,LEN(accs2.SCHKOD)) = accs2.SCHKOD AND accs.PLANID = 809 AND accs2.ID = ' 1V ' ) |
|||
|
3
dsultan
14.04.08
✎
17:21
|
(2) пустоту вернул :(
|
|||
|
4
sapphire
14.04.08
✎
17:31
|
(3) Если положение dbf-ок статично, можно создать mdbшник и прилепить к нему через связь с таблицами запрос внутри. Так делают, когда хотят уйти от ограничений ядра jet
|
|||
|
5
dsultan
14.04.08
✎
17:35
|
все ок, спасибо, при копипасте пробелы в ' 1v ' потерялись, и еще заодно узнал, что planID в dbf лежит 36ричный, а в sql версии десятичный
|
|||
|
6
sapphire
14.04.08
✎
17:36
|
(5) :)
|
|||
|
7
dsultan
14.04.08
✎
17:37
|
(4) я так и делаю для дебага, удобно в акцесе проверять
одно смущает - тот же самый запрос через тот же джет акцес выдает результат мгновенно, а прога отбирает что то долго |
|||
|
8
sapphire
14.04.08
✎
17:37
|
+(4) Иногда лучше использовать драйвер FoxPro (см документацию к 1С++),
или через Access. Кстати, частенько Accessовские БД используют для диагностики. |
|||
|
9
sapphire
14.04.08
✎
17:38
|
(7) Правильно, потому что ты не используешь индексы.
|
|||
|
10
dsultan
14.04.08
✎
17:39
|
(8) я и начал с фокспрошного драйвера, уперся в форматы дат, устал бодаться, решил джет попробовать
|
|||
|
11
dsultan
14.04.08
✎
17:41
|
а их можно через джет использовать?
|
|||
|
12
КонецЦикла
14.04.08
✎
17:47
|
(10) Юзай ОлеДБ, 1С++ и поиск
Хватит долбить |
|||
|
13
КонецЦикла
14.04.08
✎
17:48
|
Кроме того уже есть аккаунтрекордсет
|
|||
|
14
dsultan
14.04.08
✎
18:07
|
(12)а чем джет не оледб?
делал уже через 1с++, быстрые итоги, все супер, только оказалось, что с dbf они не работают самому переписывать быстрые итоги под dbf что то влом спрофайлил то, что они запрашивают, пытаюсь приладить (13) это к чему? |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |