SGBD/SQL :récuperer sur 1 ligne toutes les infos d'un même ID - SQL/NoSQL - Programmation
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.
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
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
Marsh Posté le 14-06-2006 à 16:52:36
Merci (j'ai seulement 2 type de code à récupérer PR et SP)
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 ?
Marsh Posté le 15-06-2006 à 10:40:34
Merci beaucoup
j'ai testé ta requête elle marche parfaitement
merci encore.
Marsh Posté le 15-06-2006 à 16:13:38
il faut dire merci à sunopsis tout le mérite lui revient
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.