Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/12/2011, 16h15   #1
Membre confirmé
 
Avatar de PAYASS59
 
Homme
Inscription : février 2005
Messages : 735
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2005
Messages : 735
Points : 291
Points : 291
Par défaut Eclatement des valeurs d'une colonne en plusieurs lignes

Bonjour,

Voici mon souci pour lequel j'aimerai avoir vos avis, conseils et méthode.

Je vais avoir dans une table.

jour_semaine / valeur
1;2;3;4;5 / 5
6;7 / 2


Comment puis-je traiter tout cela afin d'obtenir un INSERT me permettant d'obtenir 7 lignes à insérer dans une autre table :

jour / valeur
1 / 5
2 / 5
3 / 5
4 / 5
5 / 5
6 / 2
7 / 2

Suis-je clair dans mes explications ?

merci de votre aide
__________________
Je préfère ma soif d'apprendre, à leurs certitudes de savoir....
PAYASS59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 16h47   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Regarde Transformer les éléments d'une liste en enregistrement
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 17h12   #3
Membre confirmé
 
Avatar de PAYASS59
 
Homme
Inscription : février 2005
Messages : 735
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2005
Messages : 735
Points : 291
Points : 291
merci je suis en train de tester ton exemple mais j'ai une erreur :
Code :
1
2
3
4
5
 
connect BY level <= length(c1)-length(REPLACE(c1,',',''))+1
                                                                       *
ERREUR à la ligne 11 :
ORA-00904: "C1": invalid identifier

voici le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
 
 
SET echo ON
SET linesize 200
SET pagesize 100
COLUMN list_c1 format A5
DROP TABLE t;
CREATE TABLE t (c1 varchar2(20), c2 varchar2(20));
INSERT INTO t VALUES ('A,B,C,D','Blabla');
INSERT INTO t VALUES ('E,F,G','Blibli');
INSERT INTO t VALUES ('K,M,O,P,T,R','Blublu');
 commit;
 
 
SELECT t.c2, x.column_value AS list_c1
    FROM t
    CROSS JOIN TABLE(
                 cast(multiset(
                          SELECT substr( ','||c1||',',
                                         instr( ','||c1||',', ',', 1, rownum )+1,
                                         instr( ','||c1||',', ',', 1, rownum+1 )
                                                -instr( ','||c1||',', ',', 1, rownum )-1
                                        )
                            FROM dual
                         connect BY level <= length(c1)-length(REPLACE(c1,',',''))+1
                              ) AS sys.odcivarchar2list )
                      ) x;
__________________
Je préfère ma soif d'apprendre, à leurs certitudes de savoir....
PAYASS59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h54.


 
 
 
 
Partenaires

Hébergement Web