Oracle SQL : requête de concaténation
Poubellator
Messages postés
7
Statut
Membre
-
Heremion Messages postés 564 Statut Membre -
Heremion Messages postés 564 Statut Membre -
Bonjour,
Je bloque totalement sur une requête. J'ai eu beau fouiller les tutoriaux et chercher un peu partout je n'arrive pas à trouver la solution, peut-être que c'est parce qu'elle crève les yeux ?
Voilà mon souci : pour simplifier disons que j'ai une table avec 2 champs, et ces 2 champs s'appellent Objet et TypeObjet
TypeObjet peut prendre 4 valeurs différentes : 292, 293, 294 et 295
Objet peut être associé à 1 type comme aux 4 à la fois
Cela nous donne une table comme ceci :
_______Objet________TypeObjet
_________1____________294
_________2____________295
_________2____________292
_________2____________294
J'ai besoin que ma requête me sorte le numéro de l'objet, la concaténation de tous les types associés à cet objet (classés dans l'ordre croissant et séparés par une virgule), et enfin le MIN de tous.
Ce qui donnerait ici :
1____________294____________294
2_________292,294,295_________292
J'espère que c'est clair, et que je ne me suis pas trompé en voulant trop simplifier...
Je bloque totalement sur une requête. J'ai eu beau fouiller les tutoriaux et chercher un peu partout je n'arrive pas à trouver la solution, peut-être que c'est parce qu'elle crève les yeux ?
Voilà mon souci : pour simplifier disons que j'ai une table avec 2 champs, et ces 2 champs s'appellent Objet et TypeObjet
TypeObjet peut prendre 4 valeurs différentes : 292, 293, 294 et 295
Objet peut être associé à 1 type comme aux 4 à la fois
Cela nous donne une table comme ceci :
_______Objet________TypeObjet
_________1____________294
_________2____________295
_________2____________292
_________2____________294
J'ai besoin que ma requête me sorte le numéro de l'objet, la concaténation de tous les types associés à cet objet (classés dans l'ordre croissant et séparés par une virgule), et enfin le MIN de tous.
Ce qui donnerait ici :
1____________294____________294
2_________292,294,295_________292
J'espère que c'est clair, et que je ne me suis pas trompé en voulant trop simplifier...
A voir également:
- Oracle concaténer plusieurs champs
- Concatener deux cellules excel - Guide
- Word mettre à jour tous les champs ✓ - Forum Word
- Datediff oracle ✓ - Forum Oracle
- Excel concatener retour à la ligne - Forum Programmation
- Concatener ✓ - Forum Excel
7 réponses
Bonjour Poubellator,
J'aurais dans un premier temps fait un truc du genre :
J'aurais dans un premier temps fait un truc du genre :
DECLARE
CURSOR c IS
SELECT DISTINCT(obj)
FROM dacar.objet ;
r c%ROWTYPE ;
M INTEGER ;
chaine VARCHAR2(256) ;
BEGIN
FOR r IN c
LOOP
SELECT MIN(type_obj)
INTO m
FROM dacar.objet
WHERE obj = r.obj ;
chaine := '' ;
FOR r2 IN
( SELECT type_obj
FROM dacar.objet
WHERE obj = r.obj
ORDER BY type_obj)
LOOP
chaine := chaine||r2.type_obj||',' ;
END LOOP ;
chaine := SUBSTR(chaine,0,LENGTH(chaine)-1) ;
DBMS_OUTPUT.put_line(r.obj||'--'||chaine||'--'||m) ;
END LOOP ;
END ;
Heremion
Messages postés
564
Statut
Membre
102
Euh, je viens de m'apercevoir que j'ai laissé le dbms_output alors que celui-ci ne me servait juste qu'à afficher le résultat obtenu...il peut donc être mis en commentaire
Je ne connais pas trop Oracle mais je ne pense pas que ce soit possible.
Il va falloir ecrire un petit programme
Il va falloir ecrire un petit programme
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Si, il te faut faire une sous requête SELECT à l'intérieur de ton premier SELECT. Mais j'imagine que tu as déjà trouver une solution depuis le temps...