Les Allergies
Alimentaires
Posez votre question Signaler

[PHP-mySql] requête imbriquée

raditz 12Messages postés 27 octobre 2008Date d'inscription 4 avril 2012Dernière intervention - Dernière réponse le 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.
Lire la suite 

[PHP-mySql] requête imbriquée »

3 réponses
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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 ?
Ajouter un commentaire
Réponse
+0
moins plus
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 !
Ajouter un commentaire
Ce document intitulé « [PHP-mySql] requête imbriquée » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?