|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : octobre 2010 Messages : 6 ![]() |
Bonjour,
J'ai une liste d'utilisateurs (qui visitent des pages d'un site) : nom prenom pages visitées username password -------------------------------------------------------------------- dubois jean 12/100 jeandub oisdhuf dubord marc 3/100 marcdup sdkfjds dupond henri 24/100 henridubo koasfds la table 'users' possède uniquement les champs id, nom, prenom, username, password. le nombre de visites est calculé comme ceci : il s'agit du nb. total de pages différentes que l'utilisateur a visité. Qu'il ait visité 1 fois ou 25 fois la page x, on comptera 1. (Jean a donc vu 12 pages au total, sur 100 pages visitables au total). Même si Jean est allé 50 fois sur la page x, on comptera 1. J'utilise donc DISTINCT. la table 'visites' se compose donc ainsi : id, username_id, page_name, timestamp. Donc, sur ma page php, pour lister mes utilisateurs avec les stats des visites, je procède comme suit : - je liste d'abord tout simplement la table 'users' : SELECT * FROM USERS ORDER BY nom SELECT DISTINCT page_name FROM visites WHERE user_id = $user_id Je peux facilement faire un 'sort by' sur chaque colonne pour lister alphabétiquement, soit par nom, prénom, username, password, car tous ces champs sans dans la même table. Mais comment faire pour lister par la colonne 'nb. de pages visitées' ? Je cherche quelque chose du genre : SELECT * FROM users ORDER BY count(SELECT DISTINCT page_name FROM visites WHERE user_id = $user_id) Merci |
|
|
00
|
|
|
#2 | ||||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 641 ![]() |
bonjour,
SQL est un langage ensembliste et non itératif. Donc il faudrai en fait reprendre le problème à la base et dégager ces boucles itérative non adaptée. Le comtpage en lui même : Code :
Code :
Voila, plus besoin de boucle PHP et le résutlat est directement là. (enlever les colonnes inutiles du select stil pwd ou autre) |
||||
|
|
20
|
|
|
#3 |
|
Invité de passage
![]() Inscription : octobre 2010 Messages : 6 ![]() |
WOW ! Et bien c'est plus que beau tout ça, en plus tout fonctionne !
Merci ! Oui je sais que je "triche" en utilisant PHP pour faire une requête dans la boucle de résultats d'une autre requête. En fait j'utilise ça lorsque par exemple au lieu de vouloir le total de pages visitées, je voudrais savoir quelles pages ont été visitées (dans la cellule, on aurait : "page 1, page 3, page 12"). Dans ce cas j'imagine que la boucle PHP est la seul possibilité, question de mise en page avec le html ? En tout cas maintenant c'est propre et ça fonctionne. Ca donne envie de se mettre à MySQL ! Encore merci (2ème fois que je suis dépanné en mysql sur ce site, bravo !) |
|
|
00
|
|
|
#4 | |||
|
Membre éclairé
![]() Gérard OkonoDéveloppeur Web Inscription : juillet 2006 Messages : 711 ![]() |
Citation:
Bon vent à ce forum +10 |
|||
|
|
00
|
|
|
#5 |
![]() ![]() |
Plutôt que te mettre à MySQL, met toi à SQL tout court, c'est à dire le langage SQL normalisé. Comme ça tu pourras changer de SGBD plus facilement.
Le site à mettre dans tes favoris pour ça est celui de SQLPro. Bon apprentissage !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
Copyright © 2000-2012 - www.developpez.com