|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Membre confirmé
![]() Inscription : avril 2011 Messages : 603 ![]() |
Bonsoir,
Je n'arrive pas à obtenir le tableau que je souhaite à partir de ma requête. Je souhaiterais obtenir les articles les plus visités triés par groupe d'article. Code sql :
Cette requête me ramène : J'ai beau rajouter dans le ORDER BY "type_article_intitule" en plus de "total" je n'arrive pas à lister les articles les plus visités par groupe avec un tri par type. Une idée sur la question ? Merci. |
||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Étudiant Inscription : avril 2012 Messages : 604 ![]() |
Bonsoir,
quand tu utilise GROUP BY tu doit spécifier toutes les colonnes utilisées dans le select sauf celle qui utilise une fonction d'agrégat (somme, moyenne, comptage, ...), sinon tu aura des valeurs aléatoires dans les colonnes non spécifié qui n'utilise pas de fonction d'agrégat. Donc ta requête : Code sql :
|
||
|
|
10
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : avril 2011 Messages : 603 ![]() |
Merci pour la précision mais j'ai beau mettre
Code sql :
GROUP BY id_article, article_titre, type_article_intitule puis Code sql :
ORDER BY total DESC, type_article_intitule Je n'ai pas un tri par groupe homogène, càd, tous les tests puis toutes les balades... qui sont dans les 10 premiers articles visités |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Étudiant Inscription : avril 2012 Messages : 604 ![]() |
Peut tu nous montrer le résultat que tu souhaite avoir avec les données que tu a données dans ton premier post (l'image) s'il-te-plaît.
|
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Inscription : avril 2011 Messages : 603 ![]() |
Il me faut au final les 10 articles les plus consultés trié par type d'article.
Soit par exemple : |
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé
![]() Chercheur en informatique Inscription : mai 2002 Messages : 2 346 ![]() |
Désolé, j'avais fait un premier post puis refait le post qui était sur les mêmes propos qui en fait revenait à ce que disait Exia
d'ou la modif suivante à essayer Code sql :
__________________
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) |
||
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() Inscription : avril 2011 Messages : 603 ![]() |
Merci pour la proposition Fench mais le ORDER BY ne retourne pas ce que je voudrais récupérer.
Peut-être une sous requête ? |
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Chercheur en informatique Inscription : mai 2002 Messages : 2 346 ![]() |
En relisant le group by, les nouvelles normes ont effectivement obligé à mettre dans le group by toutes les colonnes du select (sauf les agrégats) MAIS seule la première est utilisée pour le group by !!!
Code sql :
GROUP BY type_article_intitule, id, article_titre [Edit] par contre avec MySql, nous pouvons omettre {id, article_titre} et dans ce cas, il prendra n'importe qu'elle valeur pour ces champs -> voir Exia93 [Edit] mais celà n'empêchera pas le groupement des types et donc tu n'auras pas ce que tu veux ... en effet, le chat se mort la queue ... une sous requête semble bienvenue
__________________
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) |
|
|
00
|
|
|
#9 |
|
Membre confirmé
![]() Inscription : avril 2011 Messages : 603 ![]() |
Bien tenté mais le tri ne donne pas de meilleurs résultats étant donné qu'on a un total DESC qui fait le tri du plus grand au plus petit nombre de visite.
Je pensais pas que ce serait si dur de trier la chose
|
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Chercheur en informatique Inscription : mai 2002 Messages : 2 346 ![]() |
Oui, voir Edit de mon post précédent, alors va falloir isoler les type pour avoir ton affichage ...
J'y réfléchi
__________________
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) |
|
|
00
|
|
|
#11 | ||
|
Expert Confirmé
![]() Chercheur en informatique Inscription : mai 2002 Messages : 2 346 ![]() |
Je connais avec les IN, EXIST ou MATCH mais j'ai vu et tu peux tjs essayé:
Code sql :
__________________
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) |
||
|
|
00
|
|
|
#12 |
|
Membre confirmé
![]() Inscription : avril 2011 Messages : 603 ![]() |
Le résultat de la nouvelle tentative :
On remarque que le tri par groupe se fait mais ce tri s'impose face au nombre de pages vues. |
|
|
00
|
|
|
#13 |
|
Expert Confirmé
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 1 802 ![]() |
salut,
tu devrais faire le group by dans une sous requête que tu joins au reste comme ça tu as un groupage sur une seule colonne et pas de sous groupages
__________________
soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...
|
|
|
00
|
|
|
#14 |
|
Membre confirmé
![]() Inscription : avril 2011 Messages : 603 ![]() |
|
|
|
00
|
|
|
#15 |
|
Expert Confirmé
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 1 802 ![]() |
commences par mettre des alias sur toutes les tables et préfixe chaque colonne nommé avec
![]() on va commencer par les bonnes pratiques: jointure = alias et on préfixe avec toutes les colonnes pour savoir qui appartient à qui
__________________
soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...
|
|
|
00
|
|
|
#16 | ||
|
Membre confirmé
![]() Inscription : avril 2011 Messages : 603 ![]() |
Du genre :
Code sql :
|
||
|
|
00
|
|
|
#17 | ||
|
Expert Confirmé
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 1 802 ![]() |
donc ça devrait le faire:
Code sql :
c'est <> pas != en sql
__________________
soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...
|
||
|
|
00
|
|
|
#18 | ||
|
Membre confirmé
![]() Inscription : avril 2011 Messages : 603 ![]() |
Not beter :
Petites corrections du code précédemment proposé (alias et faute de frappe): Code :
|
||
|
|
00
|
|
|
#19 |
|
Membre Expert
![]() Étudiant Inscription : avril 2012 Messages : 604 ![]() |
Bonjour,
je ne sais pas si c'est moi qui t'es mal compris mais dans toutes les requêtes que l'on t'a données je vois : mais tu demande un trie seulement sur le type article, tu avait tenter dans un post précédent : Code :
ORDER BY total DESC, type_article_intitule La colonne total ne sera plus trier par contre. |
|
|
00
|
|
|
#20 |
|
Membre confirmé
![]() Inscription : avril 2011 Messages : 603 ![]() |
Sauf que je cherche les 10 articles les plus lu tout en ayant un tri sur le type d'article.
En faisant : Je me retrouve bien avec un tri des groupes mais je n'ai pas les 10 premiers articles les plus lu. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com