faire retouner plusieurs ligne a une requete - SQL/NoSQL - Programmation
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 |
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 : |
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
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
Marsh Posté le 02-09-2008 à 14:39:12
et dans ce cas, il faut passer par une fonction
recherche "split" dans google. tu devrais trouver des exemples de code pour écrire ta fonction.
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é
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
Marsh Posté le 02-09-2008 à 17:04:32
(genre http://articles.techrepublic.com.c [...] 59821.html )
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
Marsh Posté le 29-08-2008 à 11:50:34
salut,
J'ai un table comme celle ci
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 :
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