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

Numb| Param| ID

1 |A |1
2 |B |2
3 |A |3
1 |C |4
2 |A |5
3 |A |6
1 |B |7
2 |C |8
3 |B |9

Необходимо получить результат вида

Numb| Param| ID
9 |A |1,3,5,6
6 |B |2,7,9,
3 |C |4,8

Происходит группировка по Param, суммирование по Numb и перечисление через запятую ( наличие запятой не принципиально) ID.
К сожалению не совсем понимаю каким образом это перечмсление сделать.
Подскажите, пожалуйста.
...
Рейтинг: 0 / 0
Запрос с перечислением
    #33110236
mvictor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
одним запросом у тебя не выйдет
сначала напиши функцию, кот. будет возвращать перечисления id для заданного param (напр. get_id_string() )

затем что то вроде
select sum(numb) snum, param from xxx;
group by param;
into cursor yyy nofilter

select snum,param,get_id_string(param)
...
Рейтинг: 0 / 0
Запрос с перечислением
    #33110237
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select * from t1 into curs qq1 order by Param,id
*go top
create cursor qq2 (p1 n(10),p2 c(10),p3 c(50))
do while !eof('qq1')
wp2=qq1.parm
wp1=0
wp3=''
do while !eof('qq1') and wp2=qq1.parm
wp1=+qq1.Numb
wp3=+iif(!empty(qq1.id),','+transform(qq1.id),'')
skip
enddo
insert into qq2 (p1,p2,p3) values (wp1,wp2,iif(!empty(wp3),substr(wp3,2),''))
*select qq1
enddo
use in qq1
select qq2
brow normal
ошибочки отловите
...
Рейтинг: 0 / 0
Запрос с перечислением
    #33110314
Helpik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так то оно так, но вопрос в другом: можно ли все это осуществить с помощью запросов?
...
Рейтинг: 0 / 0
Запрос с перечислением
    #33110399
Фотография ГенГрум
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты хочешь работать с локальной базой или с сервером?(клиент-сервер)

----------------------------------------------------------
Делай своё дело и будь что будет.
...
Рейтинг: 0 / 0
Запрос с перечислением
    #33110716
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Helpik!

C помошью ТОЛЬКО запросов - нет. Как минимум нужна UDF, о чём и написал mvictor
Хотя всё зависит от того с какой СУБД ты работаешь, возможно что в твоей СУБД и есть уже встроенная такая функция. В фоксе такой нету.

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Запрос с перечислением
    #33110978
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри обсуждение здесь, http://]http://forum.foxclub.ru/read.php?f=29&i=3422&t=3422, так же пару постов ниже есть ссылка на первоисточник.
...
Рейтинг: 0 / 0
Запрос с перечислением
    #33111114
Helpik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем за объяснение, но все-таки остается вопрос ))
неужели нету функции такой типа SUM() но чтобы она работала не с числовыми типами а со строками. Н-р
concat('a','b','c') = abc
И если ее нет то че ж ее не сделают то никак !!!
...
Рейтинг: 0 / 0
Запрос с перечислением
    #33111186
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для сложения символьных строк используют "+"

Код: plaintext
? 'First' + 'Second'

так же есть масса функци работы со строками STUFF, SUBSTR, AT итд.
...
Рейтинг: 0 / 0
Запрос с перечислением
    #33113791
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Helpik!

Нету, ибо нужна она мало кому. Кроме того если для SUM() порядок суссирования совершенно безразличен, то для такой склейки - нет. И опять-же как быть скажем с концевыми пробелами - если поле Char(x) то и склеиваться будут куски по x символов. разделителей между ними тоже не будет... В общем получается что на КАЖДЫЙ такой случай нужен СВОЙ УНИКАЛЬНЫЙ алгоритм склейки. Так что правильно делают производители СУБД что не внедряют никаких таких "автоматических" функций. Вот если бы можно было в фоксе сделать механизм создания не просто UDF, а именно агрегирующих функций - вот то было бы неплохо, ибо без этого и приходиться в 2 запроса делать.

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос с перечислением
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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