|
|
|
Запрос с перечислением
|
|||
|---|---|---|---|
|
#18+
Есть табла 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. К сожалению не совсем понимаю каким образом это перечмсление сделать. Подскажите, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 16:57:58 |
|
||
|
Запрос с перечислением
|
|||
|---|---|---|---|
|
#18+
одним запросом у тебя не выйдет сначала напиши функцию, кот. будет возвращать перечисления 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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 17:21:04 |
|
||
|
Запрос с перечислением
|
|||
|---|---|---|---|
|
#18+
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 ошибочки отловите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 17:21:34 |
|
||
|
Запрос с перечислением
|
|||
|---|---|---|---|
|
#18+
Так то оно так, но вопрос в другом: можно ли все это осуществить с помощью запросов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 17:44:19 |
|
||
|
Запрос с перечислением
|
|||
|---|---|---|---|
|
#18+
А ты хочешь работать с локальной базой или с сервером?(клиент-сервер) ---------------------------------------------------------- Делай своё дело и будь что будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 18:13:29 |
|
||
|
Запрос с перечислением
|
|||
|---|---|---|---|
|
#18+
Hi Helpik! C помошью ТОЛЬКО запросов - нет. Как минимум нужна UDF, о чём и написал mvictor Хотя всё зависит от того с какой СУБД ты работаешь, возможно что в твоей СУБД и есть уже встроенная такая функция. В фоксе такой нету. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 00:24:40 |
|
||
|
Запрос с перечислением
|
|||
|---|---|---|---|
|
#18+
Посмотри обсуждение здесь, http://]http://forum.foxclub.ru/read.php?f=29&i=3422&t=3422, так же пару постов ниже есть ссылка на первоисточник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 09:39:09 |
|
||
|
Запрос с перечислением
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за объяснение, но все-таки остается вопрос )) неужели нету функции такой типа SUM() но чтобы она работала не с числовыми типами а со строками. Н-р concat('a','b','c') = abc И если ее нет то че ж ее не сделают то никак !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 10:26:50 |
|
||
|
Запрос с перечислением
|
|||
|---|---|---|---|
|
#18+
Для сложения символьных строк используют "+" Код: plaintext так же есть масса функци работы со строками STUFF, SUBSTR, AT итд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 10:45:22 |
|
||
|
Запрос с перечислением
|
|||
|---|---|---|---|
|
#18+
Hi Helpik! Нету, ибо нужна она мало кому. Кроме того если для SUM() порядок суссирования совершенно безразличен, то для такой склейки - нет. И опять-же как быть скажем с концевыми пробелами - если поле Char(x) то и склеиваться будут куски по x символов. разделителей между ними тоже не будет... В общем получается что на КАЖДЫЙ такой случай нужен СВОЙ УНИКАЛЬНЫЙ алгоритм склейки. Так что правильно делают производители СУБД что не внедряют никаких таких "автоматических" функций. Вот если бы можно было в фоксе сделать механизм создания не просто UDF, а именно агрегирующих функций - вот то было бы неплохо, ибо без этого и приходиться в 2 запроса делать. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2005, 21:26:19 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33110314&tid=1594070]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
215ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 572ms |

| 0 / 0 |
