Précédent   Forum du club des développeurs et IT Pro > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/12/2012, 14h22   #21
Fench
Expert Confirmé
 
Avatar de Fench
 
Homme
Chercheur en informatique
Inscription : mai 2002
Messages : 2 346
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Groenland

Informations professionnelles :
Activité : Chercheur en informatique
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2002
Messages : 2 346
Points : 3 231
Points : 3 231
En fait, j'avais fait une erreur sur le group by, c'est plutôt:
Code sql :
1
2
3
4
5
6
7
8
9
10
SELECT * FROM (
   SELECT count(*) AS total, a.id_article AS id,article_titre,type_article_intitule
   FROM pevtt_statistique a
   JOIN pevtt_article b ON a.id_article = b.id_article
   JOIN pevtt_article_type_article c ON b.id_article = c.id_article
   JOIN pevtt_type_article d ON c.id_type_article = d.id_type_article
   WHERE type_article_intitule != "nouvelle"
   GROUP BY type_article_intitule, id, article_titre
   LIMIT 10) tableDesDix
ORDER BY total DESC
Que je trouve pas mal ( bon maintenant les alias, c à toi de voir)
__________________
Meuuh en AI à l'INRA
Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)
Fench est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 14h47   #22
heretik25
Membre confirmé
 
Homme
Inscription : avril 2011
Messages : 603
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 603
Points : 256
Points : 256
Bien tenté encore une fois mais cela me sort le top 10 des balades et non le top 10 tous article confondu
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 14h53   #23
Fench
Expert Confirmé
 
Avatar de Fench
 
Homme
Chercheur en informatique
Inscription : mai 2002
Messages : 2 346
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Groenland

Informations professionnelles :
Activité : Chercheur en informatique
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2002
Messages : 2 346
Points : 3 231
Points : 3 231
Pourtant je l'aimais bien ma requête ...

Qd tu dis le top 10 des balades, c'est comme à l'écran que tu m'as mis la dernière fois ? C'est bizzare qd même ...
__________________
Meuuh en AI à l'INRA
Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)
Fench est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 14h58   #24
heretik25
Membre confirmé
 
Homme
Inscription : avril 2011
Messages : 603
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 603
Points : 256
Points : 256
Elle était belle en effet.

Le top 10 car il y a un LIMIT 10 et balade car c'est un ORDER BY type_article_intitule sous entendu ASC. Étant donné que le type d'article "balade" possède un b, c'est ce genre d'article qui ressort.

Les 10 balades les plus vues sont donc ressorties.
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 15h01   #25
Fench
Expert Confirmé
 
Avatar de Fench
 
Homme
Chercheur en informatique
Inscription : mai 2002
Messages : 2 346
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Groenland

Informations professionnelles :
Activité : Chercheur en informatique
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2002
Messages : 2 346
Points : 3 231
Points : 3 231
Non en fait, elle est nulle ma requête En effet, un group by sur les types limité à 10, c que le type 'ballades', dans le tri alphabétique c'est le b, il ne doit pas y avoir de a non ?

Donc c le contraire. ...
Code sql :
1
2
3
4
5
6
7
8
9
10
SELECT * FROM (
   SELECT count(*) AS total, a.id_article AS id,article_titre,type_article_intitule
   FROM pevtt_statistique a
   JOIN pevtt_article b ON a.id_article = b.id_article
   JOIN pevtt_article_type_article c ON b.id_article = c.id_article
   JOIN pevtt_type_article d ON c.id_type_article = d.id_type_article
   WHERE type_article_intitule != "nouvelle"
   ORDER BY total DESC
   LIMIT 10) tableDesDix
GROUP BY type_article_intitule, id, article_type DESC
La requête interne, prend effectivement le top 10 des totaux, puis ensuite le group by de la nouvelle table
__________________
Meuuh en AI à l'INRA
Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)
Fench est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 15h03   #26
Fench
Expert Confirmé
 
Avatar de Fench
 
Homme
Chercheur en informatique
Inscription : mai 2002
Messages : 2 346
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Groenland

Informations professionnelles :
Activité : Chercheur en informatique
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2002
Messages : 2 346
Points : 3 231
Points : 3 231
Citation:
Le top 10 car il y a un LIMIT 10 et balade car c'est un ORDER BY type_article_intitule sous entendu ASC. Étant donné que le type d'article "balade" possède un b, c'est ce genre d'article qui ressort.

Les 10 balades les plus vues sont donc ressorties.
pas prem's
même reflexion !!! que des grands cerveaux en ébullition en ce moment
__________________
Meuuh en AI à l'INRA
Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)
Fench est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 15h08   #27
heretik25
Membre confirmé
 
Homme
Inscription : avril 2011
Messages : 603
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 603
Points : 256
Points : 256
La requête proposée retourne une seule ligne après correction de article_type dans le GROUP BY en type_article_intitule

260 233 Test et avis sur la tente tunnel Salewa Omega II test
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 17h52   #28
Exia93
Membre Expert
 
Homme
Étudiant
Inscription : avril 2012
Messages : 612
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2012
Messages : 612
Points : 1 070
Points : 1 070
Code :
1
2
3
4
5
6
7
8
9
10
11
SELECT * FROM (
   SELECT count(*) AS total, a.id_article AS id,article_titre,type_article_intitule
   FROM pevtt_statistique a
   JOIN pevtt_article b ON a.id_article = b.id_article
   JOIN pevtt_article_type_article c ON b.id_article = c.id_article
   JOIN pevtt_type_article d ON c.id_type_article = d.id_type_article
   WHERE type_article_intitule != "nouvelle"
   GROUP BY a.id_article, article_titre,type_article_intitule
   ORDER BY total DESC
   LIMIT 10) tableDesDix
ORDER BY tableDesDix.type_article_intitule ASC
Que donne cette requête ?

Le GROUP BY doit être fait dans la sous requête car c'est la que ce fait le comptage, donc la sous-requête va remonter les 10 articles les plus lus puis va ré-appliquer un trie sur la table temporaire tableDesDix.
Exia93 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/12/2012, 18h20   #29
heretik25
Membre confirmé
 
Homme
Inscription : avril 2011
Messages : 603
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 603
Points : 256
Points : 256
Citation:
Envoyé par Exia93 Voir le message
Code :
1
2
3
4
5
6
7
8
9
10
11
SELECT * FROM (
   SELECT count(*) AS total, a.id_article AS id,article_titre,type_article_intitule
   FROM pevtt_statistique a
   JOIN pevtt_article b ON a.id_article = b.id_article
   JOIN pevtt_article_type_article c ON b.id_article = c.id_article
   JOIN pevtt_type_article d ON c.id_type_article = d.id_type_article
   WHERE type_article_intitule != "nouvelle"
   GROUP BY a.id_article, article_titre,type_article_intitule
   ORDER BY total DESC
   LIMIT 10) tableDesDix
ORDER BY tableDesDix.type_article_intitule ASC
Que donne cette requête ?

Le GROUP BY doit être fait dans la sous requête car c'est la que ce fait le comptage, donc la sous-requête va remonter les 10 articles les plus lus puis va ré-appliquer un trie sur la table temporaire tableDesDix.
Bingo, c'est la bonne, un grand merci à tous
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h35.


 
 
 
 
Partenaires

Hébergement Web