toma Posté 8 Octobre 2008 Partager Posté 8 Octobre 2008 (modifié) Bonjour, Je me trifouille les neurones mais là je bute sur un truc à la noix. J'ai une table composée comme ceci : commandes commandes_date customers_id Voici un résultat d'un SELECT sur tout : commandes_date customers_id2008-07-15 602008-08-17 602008-06-12 652008-06-07 702008-09-21 70 J'exporte le tout dans un fichier csv. Mon but est de conserver uniquement la commande la plus récente pour un customers_id donné. Si quelqu'un peut me filer un coup de main ce serait bien apprécié parce que là je bute. Merci d'avance ! Modifié 8 Octobre 2008 par Dan Inutile de mettre [SOLVED] ou [RESOLU] dans le titre. Dan Lien vers le commentaire Partager sur d’autres sites More sharing options...
toma Posté 8 Octobre 2008 Auteur Partager Posté 8 Octobre 2008 en fait je me demande s'il est possible de faire cela avec la requête SQL... peut-être faut-il gérer ceci en PHP ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
rdd Posté 8 Octobre 2008 Partager Posté 8 Octobre 2008 (modifié) Bonjour, SELECT MAX(commandes_date) AS date_commande FROM ta_table WHERE customers_id=60 Devrait te retourner la date la plus recente pour le customers_id 60 Modifié 8 Octobre 2008 par rdd Lien vers le commentaire Partager sur d’autres sites More sharing options...
toma Posté 8 Octobre 2008 Auteur Partager Posté 8 Octobre 2008 En fait voici ma requête, car il faut aussi que je fasse un WHERE sur le statut, pour ne récupérer que les commandes qui ont été validées : SELECT * FROM customers c, commandes co WHERE c.customers_id=co.customers_id AND co.commandes_status='1' ORDER BY c.customers_id ASC Je ne fais pas de WHERE sur un seul id. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 8 Octobre 2008 Partager Posté 8 Octobre 2008 SELECT MAX(commandes_date) AS date_commande, customers_id FROM commandes WHERE commandes_status='1'Group by customers_id Lien vers le commentaire Partager sur d’autres sites More sharing options...
toma Posté 8 Octobre 2008 Auteur Partager Posté 8 Octobre 2008 mmm merci pour le tuyau. Effectivement, ça ne me retourne que la commande la plus récente pour chaque customers_id dont la commande a le statut à 1. Mais ça ne me retourne que les champs date_commande et customers_id. je voudrais aussi récupérer toutes les coordonnées des customers (ds la table correspondante) et j'ai essayé avec ceci : SELECT MAX( commandes_date ) AS date_commande, c.customers_id, c.customers_prenomFROM commandes co, customers cWHERE co.commandes_status = '1'AND co.customers_id = c.customers_idGROUP BY customers_id Et ça a l'air de marcher... je suis fébrile... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 8 Octobre 2008 Partager Posté 8 Octobre 2008 SELECT MAX( commandes_date ) AS date_commande, c.customers_id, c.customers_prenomFROM commandes co, customers cWHERE co.commandes_status = '1' AND co.customers_id = c.customers_idGROUP BY c.customers_id, c.customers_prenom Pour info : tous les champs placés dans le "SELECT" et qui ne sont pas entourés d'une fonction type SUM, AVERAGE, MAX, MIN etc... doivent être présente dans le GROUP BY Lien vers le commentaire Partager sur d’autres sites More sharing options...
toma Posté 9 Octobre 2008 Auteur Partager Posté 9 Octobre 2008 Ah bon ? Mais qu'est-ce que cela change ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 9 Octobre 2008 Partager Posté 9 Octobre 2008 Normalement, si tu fais ceci : SELECT MAX( commandes_date ) AS date_commande, c.customers_id, c.customers_prenomFROM commandes co, customers cWHERE co.commandes_status = '1' AND co.customers_id = c.customers_idGROUP BY customers_id Tu dois avoir une erreur sur le "c.customers_prenom" car il n'est pas présent dans le group by. Pour info : http://dev.mysql.com/doc/refman/5.0/fr/gro...den-fields.html Donc pour Mysql, le c.customers_prenom est "implicite" mais à manier avec précaution. Portekoi Lien vers le commentaire Partager sur d’autres sites More sharing options...
toma Posté 9 Octobre 2008 Auteur Partager Posté 9 Octobre 2008 Hummm ok, intéressant à savoir. Il faudra que je me trouve un livre pour potasser tout ça, car dans les mois à venir je vais avoir à faire des requêtes de plus en plus complexes... Quelqu'un a une bonne référence de livre plutôt "pratique" que théorique ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 9 Octobre 2008 Partager Posté 9 Octobre 2008 Google est ton ami http://sql.developpez.com/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
toma Posté 9 Octobre 2008 Auteur Partager Posté 9 Octobre 2008 Formidable merci pour le lien, et pour sûr que Google est mon ami Thanks again. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant