Je bloc sur une requête sql

Nouveau WRInaute
Bonjour,

Je sais que webrankinfo n'est pas le site le plus aproprié pour ce genre de question, mais je tente quand même le coup (apres 2 heures de recherche infructueuses sur internet).
Je n'arrive pas à ecrire la requête sql suivante :
J'ai une table CELEBRITE avec une clée primaire ID_CELEBRITE
une table ARTICLE avec une clée primaire CODE_ARTICLE
une relation n n entre ces deux tables avec la table CELEBRITE_ARTICLE qui contient 2 champs :
ID_CELEBRITE et CODE_ARTICLE
Et je désire extraire les 10 celebrités ayant le plus d'articles associés.
Je pense pas que ce soit tres compliqué, mais ca l'est déja trop pour moi ;)
Merci d'avance.
 
WRInaute occasionnel
il faut que tu te tournes vers having, laisse moi 2mn, je dois avoir ça quelque part :) (j'éditerais ce post)

donc, ça nous donne :
SELECT *,(SELECT COUNT(*) FROM celebrite WHERE celebrite.id_celebrite = article.id_celebrite GROUP BY celebrite.id_celebrite) AS nb_articles FROM celebrite ORDER BY nb_articles DESC LIMIT 10

...et bien sûr, pas besoin de HAVING la dedans :)
Ca marchera sous MySQL en version récente (5.0 minimum, il me semble)

Explication de la requete: tu sélectionnes le nombre d'articles de chaque célébrité grâce à une sous-requete, tu appelles ce résultat 'nb_articles', et tu tries sur ce score.
 
Nouveau WRInaute
Merci !!!
J'ai pas réussi à faire comme ca, mais avec le même principe et en utilisant une table temporaire, je m'en suis sortie.
 
WRInaute discret
SELECT c.*, COUNT(t.id_celebrite) as count
FROM celebrite c
LEFT JOIN tablederelation t ON (c.id_celebrite = t.id_celebrite)
GROUP BY c.id_celebrite
ORDER BY count DESC
LIMIT 10

Ya pas besoin de sous requete ou de temp table :o
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut