Récupérer liste d'articles + Liste de catégories jointes par article

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

j'ai besoin d'un renseignement Svp, car je ne maîtrise pas encore à 100/100 les jointures SQL.

Pour un blog, j'affiche une liste d'articles (j'affiche par exemple les 10 derniers articles publiés).

Et pour chaque article je souhaiterai afficher la liste des catégories qui sont jointes à cette article (par exemple, en dessous du titre de chaque article, je souhaiterai afficher : "Liste des catégories reliées à cette article : …".)

_Puis-je tout faire en une seule requete SQL? (je ne vois vraiment pas comment).

_Ou suis-je obligé de d'abord faire une requete SQL SELECT pour récupérer la liste des articles que j'affiche avec un foreach, et pour chaque article faire une requete SQL SELECT (avec JOIN…) où je récupère les catégories reliées à cette article que j'affiche avec un foreach… ? (ça je sais faire, mais c'est peut etre pas terrible au niveau performance).

ps: si c'est possible de tout faire en une seule requete SQL, j'aimerai bien un exemple ou qu'on m'explique comment SVP.

Merci beaucoup.

+0 -0
Staff

Pour simplifier l'exemple je vais prendre une mesure sous forme de 3 tables :

  • La table Article :
    • id
    • title
  • La table Category:
    • id
    • title
  • La table ArticleCategories:
    • id_article
    • id_category

En exécutant la requête :

1
2
3
SELECT a.id, a.title, c.id, c.title FROM article a
INNER JOIN articlecategories ac ON ac.id_article=a.id
INNER JOIN category c ON c.id = ac.id_category ORDER BY a.id

tu auras une liste avec plusieurs fois le même article mais toutes ses catégories.

Il te suffira alors de faire une boucle où tu lies chaque catégorie à leur article.

+1 -0
Auteur du sujet

Merci pour vos réponse. La forme de ma BDD :

1
2
3
4
5
6
7
8
9
La table Article :
    id
    title
La table Category:
    id
    name
La table ArticleCategories:
    id_article
    id_category

Et dans le blog, j'aimerai afficher le title de chaque article, et pour chaque articles afficher le name des catégories. Et si un article est join avec aucune catégorie, je souhaite tout de même afficher l article (donc avec INNER ça ne risque pas de poser de problème? ). Merci.

Édité par stephweb

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte