faire retouner plusieurs ligne a une requete

faire retouner plusieurs ligne a une requete - SQL/NoSQL - Programmation

Marsh Posté le 29-08-2008 à 11:50:34    

salut,
 
J'ai un table comme celle ci  
 

Citation :


A   B  C
1   1   cr1:cr2
2   1   ab
3   1   br


 
 
Ce que je souhaiterai, c'est que pour les lignes ou j'ai plusieurs valuers dans la colonne C,je retourne la ligne en double
 
exemple si je fais un select * from matable je voudrais ceci :

Citation :

1 1 cr1
1 1 cr2
2 1 ab
3 1 br


 
est-ce possible ?
ou cela releve de l'utopie .
 
merci de votre aide
 

Reply

Marsh Posté le 29-08-2008 à 11:50:34   

Reply

Marsh Posté le 29-08-2008 à 13:01:41    

Si une base de données contient ce genre de choses, elle est mal faite, car elle contrevient à la première règle de normalisation edictée par E. Codd (règles hélas trop méconnues) qui dit qu'une donnée ne doit contenir qu'une seule informotion et non pas plusieurs, sinon il faudrait faire plusieurs champs.
Comme SQL a été conçu prioritairement pour traiter les bases de données relationnelles (celles qui respectent les règles de normalisation), il n'est pas facile de retourner deux enregisrements à partir d'un seul.
Mais c'est tout de même faisable, avec par exemple quelque chose ressemblant à ceci :

Select substr(champ1, 1, instr(champ1, ":" )), autreschamps
  From matable
Union
Select substr(champ1, instr(champ1, ":" ), len(champ1)), autreschamps
  From matable

Reply

Marsh Posté le 29-08-2008 à 14:47:17    

je suis d'accord avec toi mais je ne peux pas modifier le modele;
ta requete me ramene les bonne ligne apparament, le truc c'est que j'ai la virgule dans le resultat
 

Citation :


1 1 cr1;  
1 1 ;cr2  
2 1 ab  
3 1 br

Reply

Marsh Posté le 29-08-2008 à 14:52:47    

ouais ben regarde la doc de substr() et ajoute les +1 et -1 là où il faut... on va pas non plus t'écrire ton application :o

Reply

Marsh Posté le 02-09-2008 à 14:01:54    

j'ai juste un petit soucis,
si dans ma colonne C j'ai plus de deux valeur par exemple :
cr1;cr2;cr3 cela ne fonctionne plus,
la requete tourne mais ne ramene rien

Reply

Marsh Posté le 02-09-2008 à 14:39:12    

et dans ce cas, il faut passer par une fonction :spamafote:
 
recherche "split" dans google. tu devrais trouver des exemples de code pour écrire ta fonction.

Reply

Marsh Posté le 02-09-2008 à 17:02:15    

ok,en faite j'ai trouver un truc en sqlserver et qui fonctionne,nikel, mais le probleme est que je suis sous oracle et du coup sa ne marche pas, car oracle a pas cette fonctionnalité

Reply

Marsh Posté le 02-09-2008 à 17:03:05    

ben oracle sait faire du pl/sql donc tu chercher "split function pl/sql" dans google et t'auras ta réponse :spamafote:

Reply

Marsh Posté le 02-09-2008 à 17:04:32    

(genre http://articles.techrepublic.com.c [...] 59821.html )


Message édité par MagicBuzz le 02-09-2008 à 17:04:46
Reply

Marsh Posté le 02-09-2008 à 17:11:40    

je vais chercher mais pas tout de suite, si ça prend trop de temps à faire , je pense que je vais me lancer la dedans

Reply

Sujets relatifs:

Leave a Replay

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