Bonjour a tous, j'ai un probleme pour recuperer un resultat. Pour vous l'expliquer voici un exemple :
J'ai 3 voitures, et ces voitures peuvent avoir une, deux ou trois couleurs (pas plus)
table voiture
voit_id = 1 / voit_nom = clio
voit_id = 2 / voit_nom = 206
voit_id = 3 / voit_nom = 4L
table couleur_voiture
coul_id = 1 / voit_id = 1 / coul = 1 / motif = bleue
coul_id = 2 / voit_id = 2 / coul = 1 / motif = rouge
coul_id = 3 / voit_id = 2 / coul = 2 / motif = blanche
coul_id = 4 / voit_id = 3 / coul = 1 / motif = jaune
coul_id = 5 / voit_id = 3 / coul = 2 / motif =verte
coul_id = 6 / voit_id = 3 / coul = 3 / motif = noire
Et j'aimerai avoir en sortie :
clio || bleue
206 || rouge - blanche
4L || jaune - verte - noire
J'ai essayé avec concat, mais ma requete ne fonctionne que si la voiture est de 3 couleurs, sinon j'ai une ligne vide en retour :
me donne bien jaune-verte-noire, mais si je met dans les Where 'voit_id=1' ca me renvoie une ligne vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select concat (a.motif,' - ',b.motif,' - ',c.motif) from (select motif from couleur where voit_id=3 and coul=1) a, (select motif from couleur where voit_id=3 and coul=2) b, (select motif from couleur where voit_id=3 and coul=3) c
J'ai du coup essayé d'introduire des 'if' dans le select concat pour dire 'si le motif est null remplacer motif par 0' par exemple, mais ca marche pas mieux.
Bon, je suis un peu une brele en SQL alors si qq un aurait une idée je suis preneur.
Merci beaucoup,
Mat.
Partager