Cyrius91 Posted October 14, 2016 Share Posted October 14, 2016 (edited) Bonjour, Je souhaite récupérer la valeur max de la colonne quantity de la table product_attribute de mes produits pour les afficher sur la page product.tpl avec mes déclinaisons. Pour se faire j'utilise: SELECT *, MAX(`quantity`) AS maxqty FROM `'._DB_PREFIX_.'product_attribute` WHERE '._DB_PREFIX_.'product_attribute.id_product = '._DB_PREFIX_.'product_lang.id_product ORDER BY maxqty"; Sauf que le résutat de ma variable est vide. Auriez vous une idée? Edited November 1, 2016 by Cyrius91 (see edit history) Link to comment Share on other sites More sharing options...
Alexandre Carette Posted October 15, 2016 Share Posted October 15, 2016 Salut, A mon avis il n y a pas de select ni de from / join sur la table ps_product_lang donc comment le where peut il fonctionner ? Link to comment Share on other sites More sharing options...
Cyrius91 Posted October 15, 2016 Author Share Posted October 15, 2016 Bonsoir Alex-Kodd, Merci pour ta réponse, mais excuse moi je n'ai pas compris ta réponse concernant la commande select ? Link to comment Share on other sites More sharing options...
coeos.pro Posted October 16, 2016 Share Posted October 16, 2016 SELECT *, MAX(`quantity`) AS maxqty FROM `'._DB_PREFIX_.'product_attribute` WHERE '._DB_PREFIX_.'product_attribute.id_product = '._DB_PREFIX_.'product_lang.id_product ORDER BY maxqty d'où viens product_lang ? Link to comment Share on other sites More sharing options...
Cyrius91 Posted October 16, 2016 Author Share Posted October 16, 2016 Bonjour coeos.pro, Merci pour ta réponse, j'ai passé pas mal de temps dessus et beaucoup de manipulations ces derniers jours et je n'avais pas vu sur cette requête ceci. Je pense que ceci : '.intval($id_product).' serait plus approprié. SELECT *, MAX(`quantity`) AS maxqtyFROM `'._DB_PREFIX_.'product_attribute`WHERE '._DB_PREFIX_.'product_attribute.id_product = '.intval($id_product).'ORDER BY maxqty Je vais faire mes tests et vous dis ce qu'il en est. Merci pour la remarque Bon dimanche Link to comment Share on other sites More sharing options...
rvcat Posted November 1, 2016 Share Posted November 1, 2016 (edited) En terme d'optimisation ce n'est pas terrible, ça veut dire que tu va appeler ta requête autant de fois que tu as de produits. Alors qu'il suffirait de rajouter cette requête dans celle qui te donne la liste des produits. exemple : select p.`id_product`, coalesce(a.`maxqty`, p.`quantity`) maxqty from `'._DB_PREFIX_.'product`p left join (select `id_product`, max(`quantity`) AS maxqty from `'._DB_PREFIX_.'product_attribute`group by `id_product`) a on a.`id_product` = p.`id_product` ...... le coalesce est là pour avoir la quantité pour les produits n'ayant pas de déclinaison. Edited November 1, 2016 by rvcat (see edit history) Link to comment Share on other sites More sharing options...
Cyrius91 Posted November 1, 2016 Author Share Posted November 1, 2016 Bonsoir rvcat et merci pour ta réponse. Entre temps j'ai réussi a faire ce que je voulais et vais ouvrir un nouveau post pour avoir des avis. Au plaisir, Link to comment Share on other sites More sharing options...
Arnaud_69 Posted November 2, 2016 Share Posted November 2, 2016 select p.`id_product`, coalesce(a.`maxqty`, p.`quantity`) AS maxqty from `'._DB_PREFIX_.'product`p left join (select `id_product`, max(`quantity`) AS maxqty from `'._DB_PREFIX_.'product_attribute`group by `id_product`) a on a.`id_product` = p.`id_product` ...... Link to comment Share on other sites More sharing options...
rvcat Posted November 2, 2016 Share Posted November 2, 2016 (edited) ça marche aussi sans le as, je pense que ça dépend de la configuration de mysql Edited November 2, 2016 by rvcat (see edit history) Link to comment Share on other sites More sharing options...
Arnaud_69 Posted November 2, 2016 Share Posted November 2, 2016 SQL 92, la vraie la seule norme sql précise qu'il faut AS. Sans le AS, on a un alias de table. Ceci dit, ce n'est pas grave rvcat, mais alors pas du tout ;-) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now