Répétez apres moi :J'aime PBAdonf. J'aime PBAdonf. J'aime PBAdonf.

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