par
Hubert Roksor » 17 avr. 2007, 05:54
Si j'ai bien compris, chaque enregistrement de la table "demande" contient l'identifiant d'un article. (j'espère que cet identifiant est numérique pour des questions de performance)
Pour compter le nombre d'enregistrements par article tu feras donc
Code : Tout sélectionner
SELECT article, COUNT(*) AS cnt
FROM demande
GROUP BY article
Maintenant, la même chose classé par ordre décroissant pour avoir les 10 plus demandés
Code : Tout sélectionner
SELECT article, COUNT(*) AS cnt
FROM demande
GROUP BY article
ORDER BY cnt DESC
LIMIT 10
Grâce à ça, tu récupères en PHP la liste des 10 articles puis tu fais une requête de type
Et te voilà avec les images. Il te suffit ensuite de reparcourir la liste précédente (celle avec la liste des articles les plus demandés) et afficher l'image correspondante.
Tu peux aussi utiliser une "table dérivée" pour fusionner les deux requêtes si ça te parait plus pratique.
Code : Tout sélectionner
SELECT top.article, p.image
FROM (
SELECT article, COUNT(*) AS cnt
FROM demande
GROUP BY article
ORDER BY cnt DESC
LIMIT 10
) AS top
JOIN produit p USING (article)
ORDER BY top.cnt DESC
Si j'ai bien compris, chaque enregistrement de la table "demande" contient l'identifiant d'un article. (j'espère que cet identifiant est numérique pour des questions de performance)
Pour compter le nombre d'enregistrements par article tu feras donc
[code] SELECT article, COUNT(*) AS cnt
FROM demande
GROUP BY article[/code]
Maintenant, la même chose classé par ordre décroissant pour avoir les 10 plus demandés
[code] SELECT article, COUNT(*) AS cnt
FROM demande
GROUP BY article
ORDER BY cnt DESC
LIMIT 10[/code]
Grâce à ça, tu récupères en PHP la liste des 10 articles puis tu fais une requête de type
[code]SELECT article, image
FROM produit
WHERE article IN (...)[/code]
Et te voilà avec les images. Il te suffit ensuite de reparcourir la liste précédente (celle avec la liste des articles les plus demandés) et afficher l'image correspondante.
Tu peux aussi utiliser une "table dérivée" pour fusionner les deux requêtes si ça te parait plus pratique.
[code] SELECT top.article, p.image
FROM (
SELECT article, COUNT(*) AS cnt
FROM demande
GROUP BY article
ORDER BY cnt DESC
LIMIT 10
) AS top
JOIN produit p USING (article)
ORDER BY top.cnt DESC[/code]