Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1015 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  MySQL : Un Order By Tres ambigu !!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

MySQL : Un Order By Tres ambigu !!

n°1360992
Capt1TaRac​e
Posté le 06-05-2006 à 19:46:38  profilanswer
 

Salut les spécialistes  ;)
 
Malgré mes recherches sur google mon ami, je n'ai pu trouvé mon bonheur et je m'en remet donc à vos connaissances :whistle:
 
Voila le topo..
 
J'ai une table "users"
avec comme champ : "idUser" "points" "parrainid"
 
Je vous explique l'histoire du parrain : chaque membre qui a des filleuls gagne 10% de leurs points.
 
j'aimerais faire une requete qui classe en fonction de tous les points : les "points" mais aussi en fonction des Points gagné grace au parainage.
Et ca, d'un seul coup.
 
L'idée ce serait un ORDER By (points+(SUM(points where parrainid = $myid))x0.1)
 
J'aimerais savoir si c'est possible, mais j'avoue avoir aucune idée de la gueule de la requete.
Peutetre faudrait faire une requete temporaire (j'ai entendu parler de ça).
 
J'ai aucune idée de comment on fait ça, un coup de main serait la bienvenue  :)  
 
Pourtant, je suis pas trop nul normallement lol
 
Merci beaucoup.

mood
Publicité
Posté le 06-05-2006 à 19:46:38  profilanswer
 

n°1361030
energiez
Posté le 06-05-2006 à 22:16:30  profilanswer
 

SELECT  
     points+  
    (SUM(SELECT points FROM users WHERE parrainid=$myid)*0,1) AS pointsfilleul  
FROM users  
WHERE idUser=$myid
ORDER BY pointsfilleul
 
 
NON TESTE !!! :p


Message édité par energiez le 06-05-2006 à 22:18:09
n°1361060
Capt1TaRac​e
Posté le 06-05-2006 à 23:35:47  profilanswer
 

Merci mec, j'ai testé un peu modif mais ce que tu m'as dit m'a bien aidé, ça m'a montré la voie :)
 
Bon ça me donne ça pour le classement TOP10 des membres :
 
SELECT idUser, login, stat_points_thismonth_withoutbonus + (
  SELECT SUM( stat_points_thismonth_withoutbonus )
  FROM table_members
  WHERE parrainid = '2' ) AS stat_points_thismonth
FROM table_members
ORDER BY stat_points_thismonth DESC
LIMIT 10  
 
Bon maintenant, je me rend compte que c'est encore + complexe que ça.
Car là, le parrainid n'est pas dynamique.
Et je m'etais trompé, c'est pas $myid mais plutot table_members.idUser enfin un truc de relationnelle non ?
 
Du relationnel Oui mais avec la requete "de premier niveau" (on se comprend?)
 
Autre soucis, je vois pas trop où mettre mon *0.1 (enfin si mais ça ne change rien, c'est peutetre du au premier probleme en fait, je pense qu'il vaut mieux resoudre le premier d'abord).
 
Merci encore à toi EnergieZ :)


Message édité par Capt1TaRace le 06-05-2006 à 23:42:07
n°1361085
Capt1TaRac​e
Posté le 07-05-2006 à 00:46:29  profilanswer
 

J'ai en partie trouvé la solution à mon premier probleme, par corrélation.
 
SELECT idUser, login, stat_points_thismonth_withoutbonus + (
  SELECT SUM( stat_points_thismonth_withoutbonus )
  FROM table_members
  WHERE parrainid = t1.idUser ) AS stat_points_thismonth
FROM table_members t1
ORDER BY stat_points_thismonth DESC
LIMIT 10  
 
Le probleme maintenant, c'est que si l'user n'a pas de filleuil, son stat est "NULL".

n°1361235
Capt1TaRac​e
Posté le 07-05-2006 à 13:06:08  profilanswer
 

J'ai peutetre trouvé la source du probleme.
Bon en fait je bloque à ce niveau la :
 
38+2=40 ça j'y arrive.
38+null=null OR JE VOUDRAIS QUE LE RESULTAT SOIT 38
 
Comment on fait ça ? pour l'instant je fais l'addition avec un SELECT(nobonus+bonus)
 
Merci ;)

n°1361240
Capt1TaRac​e
Posté le 07-05-2006 à 13:13:04  profilanswer
 

Bon, j'ai finalement réussi en cherchant sur HFR :)
J'ai trouvé IFNULL.
 
 

Code :
  1. SELECT idUser, login, stat_points_thismonth_withoutbonus + IFNULL( (
  2.   SELECT SUM( stat_points_thismonth_withoutbonus ) * 0.1
  3.   FROM table_members
  4.   WHERE parrainid = A.idUser ) , 0
  5.   ) AS stat_points_thismonth
  6. FROM table_members A
  7. ORDER BY stat_points_thismonth DESC
  8. LIMIT 10


 
 :bounce:


Message édité par Capt1TaRace le 07-05-2006 à 13:57:27

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  MySQL : Un Order By Tres ambigu !!

 

Sujets relatifs
[batch] faire exécuter 2 commandes en 1 ligne ? (très simple)Connection MySQL permanente ou pas ?
mysql et nombre d'enregistrementsExtraire le jour d'une date MySQL
[RESOLU][MYSQL] Importer une base de donnéesImportation données XML vers BDD MySql
Requête PHP MySQLrequete php mysql
requete php pour base mysqlprobleme vba excel TRES FACILE
Plus de sujets relatifs à : MySQL : Un Order By Tres ambigu !!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR