|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : mai 2011 Messages : 49 ![]() |
Bonjour à tous,
je développe un site perso dans lequel j'ai une table d'utilisateur et une autre avec les livres qu'ils ont chez eux.. J'ai une table avec un id_user et id_livre qui donne ceci : user livre 1 2 1 3 1 3 2 4 1 4 2 4 3 5 17 5 18 5 19 5 20 Je cherche à sortir dans l'ordre les utilisateurs qui ont le plus de livres différents des autres ! Dans ce cas là ça devrait me ressortir : utilisateur 5 et utilisateur 4 (car l'utilisateur 3 à des livres que l'utilisateur 4 a aussi, donc je ne veux pas le lister...) En faisant un mysql_query en DESC ça ne marche pas bien entendu car la requêtre me liste tout Mon niveau php atteint ses limites là Merci à une âme charitable qui pourra m'aider ! |
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() Développeur Web Inscription : juin 2011 Messages : 5 ![]() |
salut, je suis pas sur mais tu peux essayer de mettre un LIMIT = 2 à la fin de ta requête.
(je suis pas sur de la syntaxe.) donne des news |
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : octobre 2007 Messages : 34 ![]() |
Bonjour maxence64,
je n'ai pas de réponse pour le moment pour faire ton opération en une seulement requête ( > 5 min de réflexion), mais déjà commence avec cette requête cela va t'aider. Code :
SELECT id_user, count(id_livre) as nb_livre FROM livre group by id_user ; Après tu peux gérer cela en php tranquillement. Cdlt. |
|
|
00
|
|
|
#4 | |||
|
Membre éclairé
![]() Jérémy Étudiant Inscription : octobre 2009 Messages : 236 ![]() |
Citation:
Pour ton problème je suis pas sur mais test quelque chose dans ce style : Code :
|
|||
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Développeur Web Inscription : avril 2011 Messages : 36 ![]() |
Hum c'est quelque chose qui demande une bonne réflexion,
Je commencerai par faire une liste des livres qui ont le moins de lecteur, pour chercher ensuite ceux qui ont le plus de livres dans cette liste. Mais c'est loin d'être une solution parfaite ^^ Si on veut quelque chose de fiable, c'est un traitement qui risque fort d'être lourd car dans l'idéale il faudrait comparer les collections de livre de chaque utilisateur à toutes les autres pour trouver les plus différentes. Par exemple, si je veux les 10 collections les plus différentes : Accrochez - vous ! ![]() 1 - Je prends 10 collections , je les compares entres elles pour trouver combien de livre une collection a en commun avec TOUTES les collections. 3 - Pour toutes les collection restantes je regarde une par une le nombre de livres commun avec chacune des 10 présélectionnées. 3.1 - Si elle a moins de livre en commun qu'une des 10 collections, on supprime la collection qui a le plus de livre en commun des 10 collections et on ajoute la collection comparé à la liste des 10 collections. 3.2 - Sinon on passe à la suivante. Cela va ensuite dépendre du nombre de livres et d'utilisateurs. Mais sur un nombre relativement important il y a de grande chances pour que finalement presque toutes les collections aient beaucoup de livres en communs les unes avec les autres. |
|
|
00
|
|
|
#6 | ||
|
Membre confirmé
![]() Bertrand Étudiant Inscription : octobre 2010 Messages : 216 ![]() |
Bonjour,
je ne suis pas sur à 100% mais je pense que ce doit être ca: Code :
|
||
|
|
00
|
|
|
#7 | ||
|
Membre du Club
![]() Développeur Web Inscription : avril 2011 Messages : 36 ![]() |
Je ferais juste cette petite correction :
Code :
|
||
|
|
10
|
|
|
#8 |
|
Invité régulier
![]() Inscription : mai 2011 Messages : 49 ![]() |
Je vous remercie à tous pour vos réponses, mais ça fait plusieurs jours que je planche dessus et je n'y arrive toujours pas
Le problème avec count c'est que ça va me retourner effectivement le nombre de user qui ont le plus de livres différents... Mais moi je voudrais que ça me retourne "quel user" ? Il faut absolument que ça me retourne : user 5 et user 4 et je n'y arrive toujours pas... edit : ATTENTION s'il y a un 6e utilsiateur qui se rajoute et qui a les livres 20, 19, 18, 17 ET 16 alors ça annule l'utilisateur 5 et j'aurais donc le résultat de ma requête qui m'affichiera : Les membres qui ont le plus de livres différents des autres sont utilisateurs 6 et utilisateur 3 un vrai casse tête !! ![]() re edit : et personne ne m'a parler de select "distinct", on m'a pourtant dis que je devais utiliser ça pour ne pas me ressortir plusieurs fois l'utilisateur 5... |
|
|
00
|
|
|
#9 | |||
|
Membre confirmé
![]() Bertrand Étudiant Inscription : octobre 2010 Messages : 216 ![]() |
Citation:
sinon si tu peux faire ca comme ca tu auras les id: Code :
|
|||
|
|
10
|
|
|
#10 | |
|
Invité régulier
![]() Inscription : mai 2011 Messages : 49 ![]() |
Citation:
![]() je vais essayer la tienne (bizarre toujjours pas de "distinct" dans vos exemples..) |
|
|
|
00
|
|
|
#11 | ||
|
Membre confirmé
![]() Bertrand Étudiant Inscription : octobre 2010 Messages : 216 ![]() |
Citation:
Citation:
|
||
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() Inscription : mai 2011 Messages : 49 ![]() |
génial ! j'ai trouvé grâce aux exemple Retrokiller069 !!
j'ai dû bidouillé un ou 2 trucs, mais merci ! car je ne connaissais pas la syntaxe U1. et tout ça... résolué ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com