je récupère des éléments dans ma base en fonction des tags qui y sont liés de manière stricte. En gros, si deux tags sont définit, il ira me chercher les élément qui possèdent obligatoirement ces deux tags et non pas l'un ou l'autre.
La requête fonctionne bien.
mes tables
tags(id,name)
posts(id,thumb,width,height,type)
posts_has_tags(id_post,tag) ces deux champs liés respectivement à posts.id et tags.name
Ma table tags n'est pas importante ici.
$tags="'cars','house','music','computer'"; // exemple de retour tags
$count= 4; // il y'a 4 tags donc $count vaut 4
// requête
$queryPosts="SELECT p.id,p.thumb,p.width,p.height,p.type
FROM posts AS p
JOIN posts_has_tags AS pt ON p.id = pt.id_post
WHERE pt.tag IN(".$tags.")
GROUP BY p.id HAVING COUNT(pt.tag) = ".$count."
ORDER BY p.id DESC"
Par contre, je veux afficher tout les tags liés à cet élément, même ceux qui ne sont pas dans $tags.J'y arrive bien entendu en faisant une seconde requête dans ma boucle d'affichage mais je me demandait s'il était possible de le faire directement dans celle ci.
while($data=mysql_fetch_assoc($queryPosts)){
$id=$data['id'];
$queryTags="SELECT tag FROM posts_has_tags WHERE id_post=$id ORDER BY tag ASC";
while(....)
// affichage des tags
}
}
Avez vous une idée ou une piste vers une commande sql qui pourrait m'aider ?Merci.