Имя: Пароль:
1C
1C 7.7
v7: Запрос к дбф через FoxPro
0 alexei366
 
10.05.12
13:05
Есть такой запрос на вытягивание длинных строк, соответственно возвращается иногда несколько строк, как написать запрос чтобы возвращалась одна склеенная строка в определённом порядке

select
   BLOCK
from 1SBLOB
   where FIELDID = '  3E     '
       and ALLTRIM(OBJID) = '52'
order by BLOCKNO asc
1 nicxxx
 
10.05.12
13:06
собирай строку в цикле обхода рекордсета
2 alexei366
 
10.05.12
13:22
щас то у меня так и сделано, но смысл в том что у меня есть основной запрос на реквизиты справочника, и при обходе строк основного запроса у меня вложенные запросы на длинную строку, а я бы хотел всё реализовать в одном запросе
3 Ёпрст
 
гуру
10.05.12
13:25
взять 1sqlite ( ежели это не запрос к сторонней базе) и сделать
group_concat
4 kiruha
 
10.05.12
13:27
не надо пихать все в одну строку - тормоза обеспечены
Не зря потом в фоксе были сделаны спец поля

Лучше отдельным запросом длинные строки в Индексную табл и использовать ее при выводе
5 alexei366
 
10.05.12
14:10
Такс, ты считаешь что цикл подзапросов будет быстрее одного запроса (это раз).
Не совсем понимаю зачем индексная таблица , в 1SBLOB и так только длинные строки и находятся. И что за спец поля?
6 alexei366
 
10.05.12
14:11
Ёпрст4 я делаю запрос их 1с 8.2.15 (с сервера)
7 Ёпрст
 
гуру
10.05.12
15:11
(6) на кубани был алгоритм "сбора" в одну строку с помощью кучи левых джоинов..
8 orefkov
 
10.05.12
15:28
(3)
В 1sqlite в родной базе не надо даже group_concat делать - тама длинные строки читаются  из коробки просто как поле.
9 orefkov
 
10.05.12
15:31
(6)
Запустить клюшечную базу через OLE, и выполнить унутре запрос через 1sqlite.
10 Ёпрст
 
гуру
10.05.12
15:38
(8)Привет!
А ты не смотрел 1sqlite последний(26) на предмет вылетов на простых запросах ?
11 alexei366
 
10.05.12
16:06
так народ OLE у меня не катит, тоже тут тему открывал. Так то я раньше через OLE всё делал, но заметил подставу процедура в клиентском варианте подключается к необходимым двум базам 1с77 (из 1с82), а в клиент-серверном варианте к одной не подключается (неизвестная ошибка), бился головой об стену но ничего не помогает, поэтому решил через дбф все доставать. а вот такая тема http://www.veel.ru/?page_id=320 в foxpro не катит
12 alexei366
 
10.05.12
16:08
так то можно и левые джойны понаставлять, я так подозреваю полное наименование контрагента врятли больше двух блобов даже будет, но это както некрасиво
13 Ёпрст
 
гуру
10.05.12
16:26
(11) дык row_number и не в каждой версии скуля есть как бы
14 alexei366
 
10.05.12
16:37
Так а без него какнить можно сделать как я хочу или всётаки отдельные запросы
15 Torquader
 
11.05.12
00:07
Кстати, при сохранении слишком длинных строк в 1CBLOB на все блоки строки не хватает номера и он заменяется на **** (специально проверял).
Строку порядка мегабайта dbf-версия 1С сохранила без проблем.
16 alexei366
 
11.05.12
00:40
я про реальную длинную строку - полное наименование, мегабайты мне не грозят. Так как в одном запросе то сделать , есть ещё у кого идеи
17 kiruha
 
11.05.12
17:47
(5)
>>Такс, ты считаешь что цикл подзапросов будет быстрее одного запроса (это раз).

Это где ?
Одним дополнительным запросом все длинные наименования

>>
Не совсем понимаю зачем индексная таблица , в 1SBLOB и так только длинные строки и находятся. И что за спец поля?

Fox при выполнения запроса формирует временную таблицу
В частности у тебя может получится столбец , например длиной в 10 000 символов. Оно надо ?

Поэтому в fox е используют memo/blob
http://forum.foxclub.ru/read.php?29,291112,291160

можно немного оптимизировать - вытягивать блоки
0, 1 только - обычно этого хватает, где не хватает - отдельным подзапросом
18 alexei366
 
12.05.12
00:02
Одним запросом все длинные строки, эт получается нужен предварительный запрос на ид полей (ну впринципе можно заджойнить инером) и итоги необходимо хранить гдето пока не пошёл основной запрос чтоб подсовывать строки при обходе основного.

Напишешь приблизительный пример, а то вот как мне мемо поля помогут (конфигурацию базы и структуру файлов я менять не вправе) я чот не понимаю.

То что блоков 0 и 1 хватит на 99 процентов то я не сомневаюсь, но блин терзает "а если?". И воочще на уровне одного запроса можно сразу получиь склейку нескольких строк?
19 smaharbA
 
12.05.12
00:05
бред какой то
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс