![]() |
![]() |
![]() |
|
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
|
бред какой то
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |