Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 26-10-2007 09:33:10

Deedoo2000  
Membre Geek
Date d'inscription: 13-09-2006
Messages: 91
Pépites: 408
Banque: 0

[RESOLU] Concaténation

Hello,

je voudrais asvoir s'il existe une fonction équivalente à sum, mais qui concatènerait une colonne de varchar.

Exemple :

j'ai la table
create table#tempo
(
nombre integer,
carac varchar(10)
)

avec les deux lignes suivantes :
10 'a'
20 'b'

si je fais select sum(nombre) from #tempo, ok j'obtiens la somme de la colonne : 30

Mais si je veux la concaténation totale du contenu de la colonne carac (c'est à dire 'ab'), comment faire ?
Merci.

Dernière modification par Deedoo2000 (26-10-2007 13:01:10)

Hors ligne

 

#2 26-10-2007 09:34:28

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] Concaténation

Tu peux peut être faire un curseur ?

Hors ligne

 

#3 26-10-2007 09:37:36

Deedoo2000  
Membre Geek
Date d'inscription: 13-09-2006
Messages: 91
Pépites: 408
Banque: 0

Re: [RESOLU] Concaténation

Mouais, ça risque d'être compliqué... En fait le but c'est de concaténer une colonne pour des lignes qui ont la même valeur dans une autre colonne :

C1  C2  C3
1     X   a
2     X   b
3     Y   c

ça doit me donner
X ab
Y c

Hors ligne

 

#4 26-10-2007 09:40:12

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] Concaténation

si si avec un curseur ca va être facile

Hors ligne

 

#5 26-10-2007 09:42:21

Deedoo2000  
Membre Geek
Date d'inscription: 13-09-2006
Messages: 91
Pépites: 408
Banque: 0

Re: [RESOLU] Concaténation

Montre moi

Hors ligne

 

#6 26-10-2007 09:55:37

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] Concaténation

Code: pb

declare ton_curs cursor for 
      Select C2,C3 from ta_table;
      
      
      open ton_curs;
                        fetch ton_curs into :ls_c2, :ls_c3;
      do while SQLCA.sqlcode=100
          
          
          if isnull(ls_c2) or ls_temp<>ls_c2 then 
            ls_temp = ls_c2
          elseif ls_temp = ls_c2 then
            ls_concat = ls_concat + ls_c2
          end if
                      fetch ton_curs into :ls_c2, :ls_c3;
      loop
      
      close ton_curs;


ça devrait donner quelque chose comme ça .. si j'aibien compris.

Hors ligne

 

#7 26-10-2007 10:01:31

Deedoo2000  
Membre Geek
Date d'inscription: 13-09-2006
Messages: 91
Pépites: 408
Banque: 0

Re: [RESOLU] Concaténation

Merci, mais en fait c'est pas exactement ça. Je me suis mal exprimé.

Je voudrais obtenir dans une autre table le résultat suivant :

C1  C2
X    ab
Y    c

Ca se corse là non ?

Hors ligne

 

#8 26-10-2007 10:28:01

Steph  
crazy gamer
Lieu: Paris
Date d'inscription: 08-09-2006
Messages: 154
Pépites: 99,825
Banque: 11,934,987,430,796,550

Re: [RESOLU] Concaténation

Tu ordonnes ta requête de curseur et après, à chaque fois que tu changes de C1 (X, Y...), tu insères tes résultats (ls_concat) dans une datawindow qui correspond à ta table.

Hors ligne

 

#9 26-10-2007 10:31:22

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Concaténation

et si tu as
C1  C2  C3
1     X   a
2     X   b
3     Y   c
4     X   d
5     Y   b

tu dois avoir quoi ?


Face à l'agression, la puissance de l'intelligence

Hors ligne

 

#10 26-10-2007 11:30:59

Deedoo2000  
Membre Geek
Date d'inscription: 13-09-2006
Messages: 91
Pépites: 408
Banque: 0

Re: [RESOLU] Concaténation

JCZ a écrit:

et si tu as
C1  C2  C3
1     X   a
2     X   b
3     Y   c
4     X   d
5     Y   b

tu dois avoir quoi ?

X abd
Y cb

Hors ligne

 

#11 26-10-2007 11:42:23

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Concaténation

1 . curseur avec un select distinct C2
--> recu de ls_c2
      2. pour chaque enreg curseur avec select distinct C3 from where C2 = :ls_c2  avec  eventuellement un tri
       -->recu de ls_c3_temp
      ls_c3 = ls_c3_temp + ls_c3
         3. --> insert into ou setItem  ls_c2 & ls_c3


En esperant avoir compris ton probleme


Face à l'agression, la puissance de l'intelligence

Hors ligne

 

#12 26-10-2007 12:00:44

Deedoo2000  
Membre Geek
Date d'inscription: 13-09-2006
Messages: 91
Pépites: 408
Banque: 0

Re: [RESOLU] Concaténation

JCZ a écrit:

1 . curseur avec un select distinct C2
--> recu de ls_c2
      2. pour chaque enreg curseur avec select distinct C3 from where C2 = :ls_c2  avec  eventuellement un tri
       -->recu de ls_c3_temp
      ls_c3 = ls_c3_temp + ls_c3
         3. --> insert into ou setItem  ls_c2 & ls_c3


En esperant avoir compris ton probleme

Merci, ça semble en effet correspondre mais j'ai un peu de mal à mettre ça en application. Je comprends pas trop le "pour chaque enreg curseur avec".

Hors ligne

 

#13 26-10-2007 12:05:42

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Concaténation

un truc comme

Code: pb

declare ton_curs1 cursor for 
    Select distinct C2 from ta_table;
declare ton_curs2 cursor for 
    Select distinct C3 from ta_table
    where C2= :ls_c2;

  open ton_curs1;
  fetch ton_curs1 into :ls_c2;
  do while SQLCA.sqlcode=100
    ls_c3 = ''
    ls_c3_tmp = ''
    open ton_curs2;
    fetch ton_curs2 into :ls_c3_tmp;
    do while SQLCA.sqlcode=100
      ls_c3 = ls_c3 + ls_c3_tmp
      
      --> insert 
      --> setItem
      
      fetch ton_curs2 into :ls_c3_tmp;
    loop
    close ton_curs2;
    
    
    fetch ton_curs1 into :ls_c2;
  loop
  close ton_curs1;

Face à l'agression, la puissance de l'intelligence

Hors ligne

 

#14 26-10-2007 12:22:04

Deedoo2000  
Membre Geek
Date d'inscription: 13-09-2006
Messages: 91
Pépites: 408
Banque: 0

Re: [RESOLU] Concaténation

Merci beaucoup, je vois le truc maintenant.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22