Bonjour,
j'aimerais afficher une requete qui interroge 3 tables liés entre elles.
Ces tables sont issus de Dotclear (blog) :
dc_post, dc_categorie, dc_post_cat
La table dc_post contient les infos des billets à savoir :
post_id, post_titre, post_notes
La table dc_categorie contient les infos des catégories à savoir :
cat_id, cat_libelle
La table dc_post_cat contient les relations entre les billets et les catégories :
post_id, cat_id
j'arrive à afficher chaque billet avec son id, son titre et sa note
j'arrive aussi à afficher le nom des catégories rattachés à l'id d'un billet
Mon problème est que je n'arrive pas à ecrire une requete qui affiche chaque post avec son titre, sa note (l'image) et le nom des catégories rattachés
J'ai bien essayé avec INNER JOIN mais ça ne marche pas
j'ai essayé aussi avec LEFT JOIN
mais la encore ca n'affiche que le nom de la premiere catégorie rattaché au billet alors qu'un billet est souvent classé dans plusieurs catégories...
Savez vous si c'est possible en 1 requete sql ?
(pour info je suis un graphiste qui a commencé a mettre les mains dans le code, soyez indulgent si je m'y prend comme un manche
)
merci
Modifié par graffiti (07 Oct 2009 - 15:43)
j'aimerais afficher une requete qui interroge 3 tables liés entre elles.
Ces tables sont issus de Dotclear (blog) :
dc_post, dc_categorie, dc_post_cat
La table dc_post contient les infos des billets à savoir :
post_id, post_titre, post_notes
La table dc_categorie contient les infos des catégories à savoir :
cat_id, cat_libelle
La table dc_post_cat contient les relations entre les billets et les catégories :
post_id, cat_id
j'arrive à afficher chaque billet avec son id, son titre et sa note
SELECT
dc_post.post_id, dc_post.post_titre, dc_post.post_notes
FROM
dc_post
ORDER BY
dc_post.post_id DESC LIMIT 0,3
j'arrive aussi à afficher le nom des catégories rattachés à l'id d'un billet
SELECT
dc_post_cat.post_id, dc_categorie.cat_libelle
FROM
dc_post_cat, dc_categorie
WHERE
dc_post_cat.cat_id = dc_categorie.cat_id
ORDER BY
dc_post_cat.post_id DESC LIMIT 0,13
Mon problème est que je n'arrive pas à ecrire une requete qui affiche chaque post avec son titre, sa note (l'image) et le nom des catégories rattachés
J'ai bien essayé avec INNER JOIN mais ça ne marche pas
SELECT
dc_post.post_id, dc_post.post_titre, dc_post.post_notes,
dc_categorie.cat_libelle
FROM
dc_post
INNER JOIN dc_post_cat
ON dc_post_cat.cat_id = dc_post.post_id
INNER JOIN dc_categorie
ON dc_categorie.cat_id = dc_post_cat.cat_id
ORDER BY
dc_post.post_id DESC LIMIT 0,13
j'ai essayé aussi avec LEFT JOIN
SELECT
dc_categorie.cat_libelle, dc_post.post_id, dc_post.post_titre, dc_post.post_notes
FROM
dc_post
LEFT JOIN
dc_categorie ON dc_categorie.cat_id = dc_post.cat_id
ORDER BY
dc_post.post_id DESC LIMIT 0,3
mais la encore ca n'affiche que le nom de la premiere catégorie rattaché au billet alors qu'un billet est souvent classé dans plusieurs catégories...
Savez vous si c'est possible en 1 requete sql ?
(pour info je suis un graphiste qui a commencé a mettre les mains dans le code, soyez indulgent si je m'y prend comme un manche

merci
Modifié par graffiti (07 Oct 2009 - 15:43)