-
Select & Concat_ws
Bonjour à tous,
J'ai un petit problème sur une requête SQL avec SELECT LEFT JOIN et CONCAT_WS.
Mes deux tables sont les suivantes :
tb : artistes => dont je sélectionne tous les champs (resultset : 4)
tb : images => dont je sélectionne les champs direname et basename (resultset : 20).
Or je voudrais pouvoir faire un concat_ws de ma table images correspondant à l'artiste et n'avoir en retour que 4 lignes.
Avec ma requête je me retourve avec 20 lignes et les infos sur les artistes en doublon :
SELECT * FROM artistes a LEFT OUTER JOIN images i ON i.direname=CONCAT("artistes/",a.idx,"/");
J'espère avoir été assez clair ... :P
Merci par avance
-
A moins que je ne me goure, mais je pense pas que ce soit possible de concaténer des lignes.
Il faut que tu fasses le tri avec le langage qui va traiter les résultats de ta requête.
-
-
Merci à vous deux pour vos réponses.
Je vais me pencher sur le lien qu tu m'as donné Maximilian. Je vais surement trouver mon bonheur en traitant en brut mes données SQL et j'appliquerai les cosmétiques sous PHP ... parce qu'elles le valent bien ... :P
Encore merci !
-
En fait il est possible de concaténer plusieurs lignes avec GROUP_CONCAT, ce qui supposera un GROUP BY sur les artistes :
http://dev.mysql.com/doc/refman/5.0/...functions.html
Après de là à savoir si c'est souhaitable dans ce cas...
-
la solution
Effectivement Sirvît,
J'ai lu l'article donnée par Miximilian et La doc Mysql5 ... je suis tombé sur GROUP_CONCAT, parès qques tests sous Mysql Query je suis arrivé au résultat voulu
RQT :
Code:
SELECT a.*, GROUP_CONCAT(i.basename) AS images FROM artistes a ,images i WHERE i.direname=CONCAT("artistes/",a.idx,"/") GROUP BY a.idx;
Le résultat me retourne 4 lignes, une par artiste avec un champ supplémentaire "image" qui est une concaténation des images regroupées par artistes.
Ainsi sous PHP je pourrai exploité ce champ avec split par exemple.