MySQL : Un Order By Tres ambigu !! - PHP - Programmation
Marsh Posté le 06-05-2006 à 22:16:30
SELECT
points+
(SUM(SELECT points FROM users WHERE parrainid=$myid)*0,1) AS pointsfilleul
FROM users
WHERE idUser=$myid
ORDER BY pointsfilleul
NON TESTE !!!
Marsh Posté le 06-05-2006 à 23:35:47
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
Marsh Posté le 07-05-2006 à 00:46:29
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".
Marsh Posté le 07-05-2006 à 13:06:08
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
Marsh Posté le 07-05-2006 à 13:13:04
Bon, j'ai finalement réussi en cherchant sur HFR
J'ai trouvé IFNULL.
Code :
|
Marsh Posté le 06-05-2006 à 19:46:38
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
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.