8723 sujets

Développement web côté serveur, CMS

Bonjour à toutes et à tous !

Je suis confronté à un problème sur la création d'un menu vertical affichant des produits selon leur catégorie.
Je travaille sur une base de donnée assez complexe (celle de Prestashop). Je dispose de 3 tables qui m'intéressent :
--> La table < product > qui contient un champ "id_category_default" qui est la catégorie à laquelle appartient le produit.
--> La table < product_lang > qui contient un champ "name" contenant le nom du produit.
--> La table < category_lang > qui contient un champ "name" contenant le nom de la catégorie.

Je bloque sur la jointure. Si je comprends bien mon problème, je dois faire une jointure sur 3 tables puis filtrer mes résultat suivant la catégorie voulue.

J'ai commencé une requête :

SELECT product_lang.name
FROM product_lang
INNER JOIN category_lang
ON product_lang.id_product = category_lang.id_category
INNER JOIN product
ON product_lang.id_product = product.id_product
WHERE product.id_category_default = 4


Ma requête semble ne pas fonctionner correctement. Lorsque je l’exécute, elle me retourne des produits de la catégorie voulue mais tous ne sont pas là. J'avoue ne pas comprendre ce qui se passe.

Quelqu'un peut-il m'aider ? Merci d'avance.
Bonjour,
peut-être que tous tes produits ne se trouvent pas dans product_lang.
Vérifie si tu as autant de produits dans product que dans product_lang.

Si ils y étaient tous, je dirais que tu devrais retrouver au moins une fois chacun de tes produits, et comme tu ne filtres pas sur la langue, tu devrais aussi avoir des produits qui se répètent autant de fois que tu as de langues.

Pour ma part, j'aurais d'abord fait un select sur product et les jointures vers product_lang et category_product ensuite mais bon.
Modifié par loicbcn (29 Jun 2015 - 13:29)
je plussoie avec loicbcn,
essaie de faire une jointure left join au lieu de inner join, histoire de tester (entre product et product_lang)
Problème résolu ! Désolé du retard, j'ai complètement oublié de marquer ce sujet comme résolus !