Requête un peu trop complexe pour moi

Didierdu92 Messages postés 6 Date d'inscription vendredi 19 août 2005 Statut Membre Dernière intervention 27 juin 2012 - 13 déc. 2007 à 19:29
mementosql Messages postés 4 Date d'inscription samedi 23 août 2008 Statut Membre Dernière intervention 27 août 2008 - 23 août 2008 à 16:14
Bonjour,

Voici l'objet de ma question. J'ai une table TABLE qui contient 3 colonnes COL1, COL2 et COL3. Le résultat de ma requête doit être la concaténation des valeurs conrtenues dans les colonnes COL1 et COL2 (séparé par un '_') + la valeur contenue dans COL3 mais avec une subtilité. Prenons l'exemple suivant

TABLE contient ces valeurs :

COL1      COL2      COL3
----------------------------
VAL11    VAL21    VAL31
VAL12    VAL22    VAL32
VAL13    VAL23    VAL33

Donc comme résultat, on devrait obtenir

VAL11_VAL21   VAL31
VAL12_VAL22   VAL32
VAL13_VAL23   VAL33

Mais dans COL2, on peut avoir une valeur générique que l'on appelera VALGEN qui regroupe l'ensemble des valeurs spécifiques VAL21, VAL22, VAL23, ... (genre VALGEN='Véhicule' si VAL21, VAL22, VAL23 devaient être respectivement 'Voiture', 'Camion', 'Moto'), d'où la subtilité/
Si çà doit arriver, voilà comment la requête doit se comporter :
Prenons maintenant cet exemple :

COL1      COL2      COL3
----------------------------
VAL11    VAL21    VAL31
VAL12    VAL22    VAL32
VAL13    VAL23    VAL33

VAL11    VALGEN VAL34
VAL12    VALGEN VAL35

(Constatez que VAL11 et VAL12 de la colonne COL1 sont à la fois associés à une valeur spécifique et à la valeur générique VALGEN dans la colonne COL2)

La requête devra sortir comme résultat

VAL11_VAL21     VAL31
VAL11_VAL21     VAL34 <-
VAL12_VAL22     VAL32
VAL12_VAL22     VAL35 <-
VAL13_VAL23     VAL33
VAL11_VALGEN VAL34
VAL12_VALGEN VAL35

C'est à dire que les couples VAL11\VALGEN et VAL12\VALGEN sont traités comme les autres mais en plus les couples VAL11\VAL21 et VAL12\VAL22 récupèrent respectivement la valeur de la colonne COL3 des couples VAL11\VALGEN et VAL12\VALGEN

J'espère avoir été clair dans mes explications.
Je vous remercie par avance de votre aide car je suis un peu perdu.

Didier

1 réponse

mementosql Messages postés 4 Date d'inscription samedi 23 août 2008 Statut Membre Dernière intervention 27 août 2008 1
23 août 2008 à 16:14
Bonjour,

Aller, je me lance ; si j ai bien compris ton pb (pas sur), voici ce que je propose

select col1 || '_' || col2 recol1, col3 from tatable
union select t1.col1 || '_' || t1.col2 rescol1, t2.col3 from tatable t1 inner join tatable t2 on (t1.col1t2.col1 and T2.col2 'VALGEN' and t1.col2 <> 'VALGEN')
order by rescol1

MS
http://aide-oracle.blogspot.com
0
Rejoignez-nous