PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 04-10-2010 16:39:24

Sq78
Membre
Inscription : 13-05-2009
Messages : 47

Retrouver les enregistrements les plus récents par catégorie

Bonjour,
J'ai une table qui contient ces enregistrements:

ID  rencontre  ladate  queljour  heure  gymnase  categorie  equipe1  equipe2  journee  phase  semaine  resultat  score   graphique 
      187 3FAA007 2010-10-02 02 Octobre 20:00 Ostermeyer à Mitry sfr3 USJ Mitry VB Saint-Cloud Volley 2 2 1 39 0/3 12/25 - 20/25 - 15/25 1
      273 SFAA003 2010-10-03 03 Octobre 16:00 Jules Ladoumègue à Montigny le Btx sfd1 Montigny le Bretonneux 2 Vélizy 2 1 1 39 1/3 14/25 - 19/25 - 25/18 - 27/29 1
      188 3FAA008 2010-10-03 03 Octobre 14:00 Béatrice Hess à La Courneuve sfr3 ECS La Courneuve AS Sartrouville 2 1 39 0/3 15/25 - 17/25 - 15/25 1
      97 3MBA007 2010-10-03 03 Octobre 16:30 Colette Besson à Fontenay sous Bois shr3 US Fontenay sous Bois 2 CS Noisy le Grand 2 1 39 3/2 15/25 - 17/25 - 25/22 - 25/17 - 15/09 1
      3 2MAA003 2010-09-26 26 Septembre 14:00 Cour des Lions à Paris (11ème) shr2 Paris VC AS Montigny le Bretonneux 1 1 38 1/3 15/25 - 25/22 - 20/25 - 21/25 1
      190 3FAA010 2010-10-03 03 Octobre 15:30 Fond des Princes à Paris (16ème) sfr3 Stade français 4 FSVE Esbly Coupvray VB 2 1 39 0/3 18/25 - 11/25 - 23/25 1
      99 3MBA009 2010-10-03 03 Octobre 14:00 Pierre de Coubertin à Montigny le Btx shr3 AS Montigny le Bretonneux 2 TU Verrières le Buisson 2 1 39 1/3 20/25 - 17/25 - 25/20 - 18/25 1
      7 2MAA007 2010-10-02 02 Octobre 20:30 Pasteur à Chevilly-Larue shr2 Elan Chevilly-Larue USJ Mitry VB 2 1 39 3/2 20/25 - 22/25 - 27/25 - 25/21 - 17/15 1
      183 3FAA003 2010-09-26 26 Septembre 14:00 Carnot à Sartrouville sfr3 AS Sartrouville SC Paraysien-Morangis 1 1 38 0/3 21/25 - 19/25 - 19/25 1
      96 3MBA006 2010-10-03 03 Octobre 13:30 Valeyre à Paris 9ème shr3 SC 9ème ACS Cormeilles 2 1 39 3/1 22/25 - 25/15 - 25/18 - 25/13 1
      91 3MBA001 2010-09-26 26 Septembre 14:00 Joliot Curie au Plessis-Robinson shr3 Plessis-Robinson VB 3 ACS Cormeilles 1 1 38 0/3 24/26 - 18/25 - 21/25 1
      182 3FAA002 2010-09-25 25 Septembre 20:00 Jules Ladoumègue à Montigny le Btx sfr3 AS Montigny le Bretonneux Stade français 4 1 1 38 0/3 24/26 - 20/25 - 18/25 1
      189 3FAA009 2010-10-02 02 Octobre 18:30 Souillat à Paray vieille poste sfr3 SC Paraysien-Morangis AS Montigny le Bretonneux 2 1 39 3/0 25/09 - 25/16 - 25/18 1
      2 2MAA002 2010-09-25 25 Septembre 20:00 Cosom au Vésinet shr2 Le Vésinet SG 2 Asnières Volley 3 1 1 38 3/0 25/13 - 25/19 - 25/20 1
      181 3FAA001 2010-09-25 25 Septembre 20:00 Sourde à Magny le Hongre sfr3 FSVE Esbly Coupvray VB Poissy volley 1 1 38 3/0 25/15 - 25/22 - 25/22 1
      363 SMAA003 2010-10-03 03 Octobre 14:00 Jules Ladoumègue à Montigny le Btx shd1 Montigny le Bretonneux 3 Vélizy 2 1 1 39 1/3 25/16 - 17/25 - 15/25 - 15/25 1
      93 3MBA003 2010-09-25 25 Septembre 20:00 Carnot à Sartrouville shr3 AS Sartrouville AS Montigny le Bretonneux 2 1 1 38 3/0 25/18 - 25/17 - 25/18 1
      98 3MBA008 2010-10-03 03 Octobre 14:00 Pierre Brossolette à Chatenay Malabry shr3 AS Voltaire AS Sartrouville 2 1 39 3/0 25/19 - 25/22 - 25/21 1
      5 2MAA005 2010-09-25 25 Septembre 20:30 Verhaeren à Saint-Cloud shr2 Saint-Cloud Volley 2 Elan Chevilly-Larue 1 1 38 3/2 25/20 - 18/25 - 18/25 - 25/21 - 15/12 1
      8 2MAA008 2010-10-02 02 Octobre 20:00 Maurice Herzog à Charenton-le-Pont shr2 CNM Charenton 3 Paris VC 2 1 39 1/3 25/20 - 23/25 - 21/25 - 27/29 1
      94 3MBA004 2010-09-26 26 Septembre 14:00 Des côteaux à Noisy le Grand shr3 CS Noisy le Grand AS Voltaire 1 1 38 3/0 25/20 - 25/16 - 25/23 1
      95 3MBA005 2010-09-26 26 Septembre 13:30 Valeyre à Paris 9ème shr3 SC 9ème US Fontenay sous Bois 2 1 1 38 3/1 25/20 - 30/32 - 25/21 - 25/21 1
      186 3FAA006 2010-10-03 03 Octobre 15:30 Valeyre à Paris 9ème sfr3 SC 9ème 2 Poissy volley 2 1 39 3/0 25/21 - 25/15 - 25/11 1
      185 3FAA005 2010-09-26 26 Septembre 16:00 Courcelles à Paris (17ème) sfr3 SC 9ème 2 USJ Mitry VB 1 1 38 3/0 25/21 - 25/21 - 25/14 1
      9 2MAA009 2010-10-03 03 Octobre 16:30 Pierre de Coubertin à Montigny le Btx shr2 AS Montigny le Bretonneux Le Vésinet SG 2 2 1 39 3/0 25/21 - 29/27 - 25/21 1
      4 2MAA004 2010-09-25 25 Septembre 20:00 Ostermeyer à Mitry shr2 USJ Mitry VB CNM Charenton 3 1 1 38 3/1 25/22 - 25/21 - 18/25 - 25/22 1
      100 3MBA010 2010-10-02 02 Octobre 20:00 Fond des Princes à Paris (16ème) shr3 Stade français Plessis-Robinson VB 3 2 1 39 3/0 25/22 - 25/22 - 25/21 1
      92 3MBA002 2010-09-26 26 Septembre 16:00 Vallée Dame à Verrières le Buisson shr3 TU Verrières le Buisson Stade français 1 1 38 3/0 25/22 - 25/22 - 25/23 1
      184 3FAA004 2010-09-25 25 Septembre 20:00 La fouilleuse à Saint-Cloud sfr3 Saint-Cloud Volley 2 ECS La Courneuve 1 1 38 3/0 25/23 - 25/16 - 25/12 1
      6 2MAA006 2010-10-02 02 Octobre 20:00 Verhaeren à Saint-Cloud shr2 Saint-Cloud Volley 2 US Lognes VB 2 1 39 3/0 31/29 - 25/20 - 25/20

Je cherche à faire afficher le résultat le plus récent de chaque équipe de Montigny.

Voici ma requête:

SELECT ID, MAX( ladate ) , categorie, equipe1, equipe2, resultat
FROM `rencontres`
WHERE (
equipe1 LIKE '%Montigny le B%'
OR equipe2 LIKE '%Montigny le B%'
)
AND resultat <> '--'
GROUP BY categorie
ORDER BY ladate DESC

Seulement y'a une erreur parce que voici le résultat obtenu:

ID  MAX( ladate )  categorie  equipe1  equipe2  resultat 
273 2010-10-03 sfd1 Montigny le Bretonneux 2 Vélizy 2 1/3
363 2010-10-03 shd1 Montigny le Bretonneux 3 Vélizy 2 1/3
3 2010-10-03 shr2 Paris VC AS Montigny le Bretonneux 1/3
93 2010-10-03 shr3 AS Sartrouville AS Montigny le Bretonneux 2 3/0
182 2010-10-02 sfr3 AS Montigny le Bretonneux Stade français 4 0/3

On voit par exemple que l'enregistrement qui a l'ID 3 (en rouge dans le second tableau de résultats) n'a pas la bonne date. Il a celle de l'enregistrement qui a l'ID 9 (en rouge dans le 1er tableau).
Je ne vois pas comment construire ma requête autrement. (Pour info, je suis en MySql 4.0.18)
Quelqu'un a une idée svp ?

Hors ligne

#2 05-10-2010 08:12:01

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Retrouver les enregistrements les plus récents par catégorie

Saluton,
Tu découvres que la logique du GROUP BY impose de gérer la dépendance fonctionnelle entre les colonnes du SELECT que le GROUP BY ne garantit pas.
Je ne peux que t'engager à étudier en détail, pour commencer, cet excellent tutoriel de Frédéric Brouard alias SQL Pro :
SQL de A à Z, groupage, sous-ensembles


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 06-10-2010 09:00:11

Sq78
Membre
Inscription : 13-05-2009
Messages : 47

Re : Retrouver les enregistrements les plus récents par catégorie

J'ai lu l'article (enfin j'ai tenté de le comprendre). J'ai aussi trouvé une réponse sur un autre forum qui me semblait être la bonne.
J'ai donc adapté ma requête comme ceci:

SELECT t1.ladate AS dernier, t1.categorie, t1.equipe1, t1.equipe2, t1.resultat
FROM rencontres t1
INNER JOIN rencontres t2 ON t1.ladate = t2.ladate
GROUP BY t1.ladate, t1.categorie, t1.equipe1, t1.equipe2, t1.resultat
HAVING t1.dernier = MAX( t2.ladate )
AND t1.resultat <> '--'
AND (
t1.equipe1 LIKE '%Montigny le B%'
OR t1.equipe2 LIKE '%Montigny le B%'
)

seulement j'obtiens bien des lignes cohérentes cette fois, mais aussi les lignes que je ne désire pas.
La clause HAVING sur la date la plus recente ne fonctionne pas.

Hors ligne

#4 06-10-2010 09:08:59

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Retrouver les enregistrements les plus récents par catégorie

>>Je cherche à faire afficher le résultat le plus récent de chaque équipe de Montigny

pourquoi faire simple qd on peut faire compliqué

ta 1ere requete etait presque bonne


SELECT ID,  ladate  , categorie, equipe1, equipe2, resultat
FROM `rencontres`
WHERE (
equipe1 LIKE '%Montigny le B%'
OR equipe2 LIKE '%Montigny le B%'
)
AND resultat <> '--'
ORDER BY ladate DESC
LIMIT 1


a++

Hors ligne

#5 06-10-2010 09:17:42

Sq78
Membre
Inscription : 13-05-2009
Messages : 47

Re : Retrouver les enregistrements les plus récents par catégorie

Merci de ta réponse, mais ça ne fonctionne pas comme ça.
Ca me donne 1 enregistrement (Le dernier en date ok), mais je souhaite avoir le dernier par catégorie. Le dernier en shr2, en shr3, en sfr3.....

Hors ligne

#6 06-10-2010 12:24:53

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Retrouver les enregistrements les plus récents par catégorie

En adaptant cet exemple tu devrais t'en sortir :
Obtenir les n premiers éléments par catégorie en donnant à n la valeur 1


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums