[PHP-mySql] requête imbriquée

Fermé
raditz Messages postés 13 Date d'inscription lundi 27 octobre 2008 Statut Membre Dernière intervention 4 avril 2012 - 17 mai 2011 à 13:12
raditz Messages postés 13 Date d'inscription lundi 27 octobre 2008 Statut Membre Dernière intervention 4 avril 2012 - 18 mai 2011 à 10:47
Bonjour à tous,
je me casse la tête sur la requête suivante :

J'ai une table ce_lqdj_pts avec les champs : lp_id (auto increment, primaire), lp_uid (id user), lp_pts (nombre de point par journée).
Pour obtenir le nombre de points cumulés lors de la derniere journée et créer un classement, pas de soucis :

$sql_pts = "SELECT lp_uid, SUM(lp_pts) AS pts_equipes FROM ce_lqdj_pts GROUP BY lp_uid ORDER BY pts_equipes DESC";



J'aimerais obtenir le nombre de points cumulés lors de la journée précédente (càd le classement sans le dernier lp_id de chaque lp_uid) et là je bloque, je ne dois pas etre tres loin du compte :

$sql_last_pts= "SELECT lp_id, lp_uid, SUM(lp_pts) AS pts_equipes FROM ce_lqdj_pts GROUP BY lp_uid HAVING NOT lp_id IN (SELECT MAX(lp_id) AS max_lpid FROM ce_lqdj_pts GROUP BY lp_uid) ORDER BY pts_equipes_ancien DESC";


J'obtiens le meme résultat que ma requete précédente, je bisque !
Merci pour votre aide.

A voir également:

3 réponses

raditz Messages postés 13 Date d'inscription lundi 27 octobre 2008 Statut Membre Dernière intervention 4 avril 2012 2
18 mai 2011 à 10:47
On m'a donné la réponse sur un autre forum :

SELECT lp_uid, SUM(lp_pts) AS pts_equipes
FROM ce_lqdj_pts
WHERE NOT lp_id IN (SELECT MAX(lp_id) AS max_lpid FROM ce_lqdj_pts GROUP BY lp_uid)
GROUP BY lp_uid
ORDER BY pts_equipes_ancien DESC


Merci pour votre aide !
1
Utilisateur anonyme
17 mai 2011 à 15:31
Bonjour,

SELECT lp_id, lp_uid, SUM(lp_pts) AS pts_equipes 
FROM ce_lqdj_pts 
GROUP BY lp_uid 
HAVING  lp_id < (SELECT MAX(lp_id) FROM ce_lqdj_pts ) 
ORDER BY pts_equipes_ancien DESC


Devrait fonctionner
0
raditz Messages postés 13 Date d'inscription lundi 27 octobre 2008 Statut Membre Dernière intervention 4 avril 2012 2
18 mai 2011 à 10:33
Non ça ne fonctionne pas. On m'a conseillé d'ajouter un champ date :
Merci pour votre réponse.

$sql_pts_ancien = "SELECT lp_id,lp_uid,lp_date,SUM(lp_pts) AS pts_equipes_ancien FROM ce_lqdj_pts GROUP BY lp_uid HAVING lp_date < MAX(lp_date) ORDER BY pts_equipes_ancien DESC";


Le souci, c'est que mon SUM(lp_pts) me donne tjrs la somme de tous les enregistrement et pas la somme de tous les enregistrements - le dernier en date.

Vous voyez une soluce ?
0