SGBD/SQL :récuperer sur 1 ligne toutes les infos d'un même ID

SGBD/SQL :récuperer sur 1 ligne toutes les infos d'un même ID - SQL/NoSQL - Programmation

Marsh Posté le 14-06-2006 à 09:50:11    

Bonjour,
 
Quelles serait la requête qui me permettrait de récupérer toutes les infos d'un même ID sur une même ligne  sous ce format :
                ID,code1, libelle1, code2, libelle2
 
la table se compose de :
 ID 1 = code : PR   libelle : adresse1
 ID 1 = code : BU  libelle : adresse2
 ID 2 = code :SP   libelle : adresse3
 ID 3 = code : PR  libelle : adresse4
 ID 4 = code SP libelle : adresse5
 ID 4 = code PR libelle : adresse 6
 
Je veux afficher les codes "SP" + libelle et "PR" + libelle pour un même ID si pas de code SP je n'affiche que le code "PR"
si pas de code "PR" je n'affiche que le code "SP"
 
Merci pour votre aide.
 

Reply

Marsh Posté le 14-06-2006 à 09:50:11   

Reply

Marsh Posté le 14-06-2006 à 15:28:11    

Je pense que le mieux est de faire une boucle (curseur) sur l'ensemble de tes ID et génerer une concaténation à chaque occurence rencontrée.

 

Tu as un gros volume de données ?

 

Si tu as peu de codes (genre 3 : BU, PR SR) tu peux aussi faire 3 extractions vers des tables temporaires, lier le tout sur l'id et génerer ta phrase concaténée.

 

:)

Reply

Marsh Posté le 14-06-2006 à 16:17:05    

Merci beaucoup pour ton aide  
 
Je vais tenter la solution des tables temporaires puisque la table n'a pas un gros voume de données.
Elle contient 20000 lignes au total
 
 

Reply

Marsh Posté le 14-06-2006 à 16:39:42    

Les tables temporaires ça fonctionne si tu as peu de codes différents, et éventuellement que tu les connais préalablement  :)

 

Pense à te faire une table temp ou une selection sur un distinct IDet de faire des OUTER pour les liaisons, comme ça tu devrais tout choper :)


Message édité par chapi le 14-06-2006 à 16:40:39
Reply

Marsh Posté le 14-06-2006 à 16:52:36    

Merci (j'ai seulement 2 type de code à récupérer PR et SP)  
 
 

Reply

Marsh Posté le 15-06-2006 à 00:06:17    

en réponse à ta question, voila la requete sql
 
Si la table en source est celle ci :
table CUST  qui contient 3 champs : ID | COD | LIB
le champ COD ne  prend que 2 valeurs différentes
si on prend cette table 3 fois dans le from avec un alias différent, avec jointure sur l'id et filtre sur le code, on obtient une requete du type :
 
select  
 CUS.ID,
 CUS2.COD,
 CUS2.LIB,
 CUS1.COD,
 CUS1.LIB  
from BDDTEST.CUST  CUS, BDDTEST.CUST CUS2, BDDTEST.CUST  CUS1  
where    
CUS.ID=CUS1.ID(+)
AND CUS.ID=CUS2.ID(+)
And CUS1.COD(+)='PR'
And CUS2.COD(+)='SP'
 
 
 
Edit : sur de gros volumes de données, quelle solution (table temporaire ou select précédent) serait la plus performante ?


Message édité par swich le 15-06-2006 à 00:18:04
Reply

Marsh Posté le 15-06-2006 à 10:40:34    

Merci beaucoup  
j'ai testé ta requête elle marche parfaitement
 
merci encore.

Reply

Marsh Posté le 15-06-2006 à 16:13:38    

il faut dire merci à sunopsis ;) tout le mérite lui revient


Message édité par swich le 15-06-2006 à 16:14:03
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed