Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2917 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [ORACLE] Concaténation d'enregistrements

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ORACLE] Concaténation d'enregistrements

n°724147
AMDFan
Posté le 13-05-2004 à 08:15:25  profilanswer
 

Hello !
 
Je me prends la tête sur une chose que je ne trouve pas.
Mon problème semble pourtant anodin, enfin je crois :whistle:  
 
En une seule requête SQL, je voudrais afficher ceci...
 


MaTable
---------------
Ident   Nom
 
1       pierre
1       paul
1       jacques
2       toto
2       tutu


 
En cela...
 


---------------
Ident   Noms
 
1       pierre, paul, jacques
2       toto, titi


 
C'est possible tout ça ?

mood
Publicité
Posté le 13-05-2004 à 08:15:25  profilanswer
 

n°724193
jagstang
Pa Capona ಠ_ಠ
Posté le 13-05-2004 à 08:55:14  profilanswer
 

la concaténation est possible avec d'autres champs du même enregistrement, mais pas avec un champ d'un autre enregistrement. là tu est obligé de faire n requêtes pour n groupes que tu veux [:spamafote]
 
Si qqn peux confirmer mes dires. merci

n°724781
Beegee
Posté le 13-05-2004 à 15:07:55  profilanswer
 

il me semble bien que ce n'est pas possible directement en SQL ...
 
mais bon, c'est tellement simple de le faire dans le code qui lance la requête ...

n°725159
AMDFan
Posté le 13-05-2004 à 20:15:27  profilanswer
 

Bonsoir ici !
 
Mes contraintes sont telles qu'il fallait que je trouve ça en une requête, et c'est chose faite à présent.
 
Bon, effectivement ce n'est pas possible de faire ça avec une instruction SQL définie.
 
Des fois que quelqu'un se pose la même question que moi, ce qui ne devrait pas représenter grande monde :whistle: ...
 
Il faut créer une fonction en PL/SQL, qu'il est donc possible d'utiliser de manière transparente en SQL.
 
La création de la fonction...


create or replace
  function MonStrCat( ArgIdent in number )
  return varchar2
is
  VarRetour varchar2(2000) default null;
  VarSep varchar2(2) default null;  
begin
  for x in ( select Nom from MaTable where Ident = ArgIdent )  
  loop
    VarRetour := VarRetour || VarSep  || x.Nom;
    VarSep := ', ';
  end loop;
  return VarRetour;
end;
/


 
La requête SQL...


select Ident, MonStrCat(Ident) Noms
from MaTable
group by Ident;


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [ORACLE] Concaténation d'enregistrements

 

Sujets relatifs
Ces commandes sont-elles propriètaires Oracle ou dans la norme SQL ?Erreur ORACLE
Recherche d'un champ sur une base de données Oracleinitialisation d'une base de données Oracle
[ACCESS] Conflit d'écriture ACCESS <-> ORACLE[Oracle] Importation de données d'un fichier CSV
[Oracle-PL/SQL] erreur sur un DECLARE ?!???easyphp et oracle?????
Probleme Oraclesauvegarde oracle
Plus de sujets relatifs à : [ORACLE] Concaténation d'enregistrements


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR