powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / запрос
10 сообщений из 10, страница 1 из 1
запрос
    #32462221
pako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте все.

Можно ли сделать view или написать SELECT, чтобы из
1 bb
2 cc
2 dd
2 aa
3 bb
4 aa
4 dd

Получить
1 aa, bb
2 cc, dd, aa
3 bb
4 aa, dd

(aa, bb, .. ) могут быть разные (около 200 наименований)
...
Рейтинг: 0 / 0
запрос
    #32462341
vl2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наверное ошибка в вопросе?
надо:

>Получить
>1 aa
>2 cc, dd, aa
>3 bb
>4 aa, dd

Если только использовать пользовательскую функцию, которая выбирает записи с одинаковым кодом в курсор, а потом проходит по курсору, формирует строку и возвращает её. Вызов ее поставить в HAVING (соответственно и GROUP BY <код> дожен быть)
...
Рейтинг: 0 / 0
запрос
    #32462345
vl2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, сам ошибся:

>1 bb
...
Рейтинг: 0 / 0
запрос
    #32462366
pako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да должно быть
1 aa, bb
2 cc, dd, aa
3 bb
4 aa, dd

Мне надо чтобы был view или SELECT, чтобы результат использовать во внешнем отчете. В MS SQL сервере решается эта проблема с помощью функции. А здесь не могу придумать как.
...
Рейтинг: 0 / 0
запрос
    #32462626
vl2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй так:
*******************************************

Select COD, FIND_STRING(COD) FROM имя_таблицы ;
WHERE !DELE() ;
GROUP BY COD ;
INTO CURSOR tmp



* функция формирования строки
FUNC find_string
PARA id_cod
Select поле_названия FROM имя_таблицы ;
WHERE !DELE() AND cod=id_cod ;
ORDER BY поле_названия ;
INTO CURSOR tmp1
cStr=''
IF RECC('tmp1')>0
GO TOP in tmp1
SCAN
cStr=cStr+IIF(LEN(cStr)>0,", "+ALLT(tmp1.поле_названия),ALLT(tmp1. поле_названия))
ENDSCAN
ENDIF
USE IN tmp1
cStr=PADR(cStr,254," ")
RETURN cStr

*****************************************
вроде бы должно работать
...
Рейтинг: 0 / 0
запрос
    #32462713
pako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примерно так я делал, но работает очень медленно.
Тем более у меня таблицы без индексов (так было нужно).
...
Рейтинг: 0 / 0
запрос
    #32462726
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда создайте временную таблицу или курсор и проиндексируйте
...
Рейтинг: 0 / 0
запрос
    #32462740
pako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это тоже не приемлемо
В dbc-dbf лежат данные
Приложение в Delphi
отчеты в crystale
Буду создавать дополнительную таблицу с нужными данными
...
Рейтинг: 0 / 0
запрос
    #32462940
vl2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я предполагал, что для таблицы в 200 записей это должно летать :)
...
Рейтинг: 0 / 0
запрос
    #32463260
pako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
200 записей - это продукты.
А вторая - огромная
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]