Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/02/2011, 23h26   #1
Membre régulier
 
Avatar de monlou
 
Inscription : janvier 2010
Messages : 265
Détails du profil
Informations personnelles :
Âge : 59
Localisation : Canada

Informations forums :
Inscription : janvier 2010
Messages : 265
Points : 73
Points : 73
Par défaut trier avec GROUP BY et afficher derniere date

Bonjour,

j'ai un script qui sélectionne des enregistrements et duquel je regroupe par membreID et je désire afficher la derniere date par membre ID

Code :
1
2
3
$sql= ("SELECT id, pseudo, membreID, DATE_FORMAT(date,'%d/%m/%Y %H:%i') AS date, SUM(si_message) AS si
		from messagerie WHERE switch = 1 AND pseudo NOT IN ('sebastien')
		GROUP BY membreID ORDER BY date DESC ");

bien entendu ce script n'affiche pas les derniers messages, il l classe les membreID seulement par date la plus récente.

Je cherche comment m'y prendre pour afficher la dernière date de chaque membreID

merci de vos réponses


...
__________________
Ils ne savaient pas que c'était impossible, alors ils l'ont fait!
Mark Twain.
monlou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 08h44   #2
Invité régulier
 
Inscription : août 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 13
Points : 6
Points : 6
Bonjour

Perso j'aurais fait cela mais a mon avis il y a bien mieux a faire et je vais suivre les réponses des experts

Code :
1
2
3
$sql= ("SELECT id, pseudo, membreID, DATE_FORMAT(date,'%d/%m/%Y %H:%i') AS date, SUM(si_message) AS si
		from messagerie M WHERE date=(select max(date) from messagerie where id=M.id) and switch = 1 AND pseudo NOT IN ('sebastien')
		GROUP BY membreID ORDER BY date DESC ");
C'est pas trés beau et surement pas optimisé mais cela doit fonctionner
sebonsun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 13h43   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 993
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 993
Points : 18 243
Points : 18 243
Envoyer un message via MSN à CinePhil
Code :
1
2
3
4
5
6
7
SELECT membreID, 
    MAX(`date`) AS derniere_date,
    SUM(si_message) AS si
FROM messagerie
WHERE switch = 1 
    AND pseudo NOT IN ('sebastien')
GROUP BY membreID
Remarques :
1) "date" est un mot réservé du langage SQL ; il ne faut pas nommer les objets du SGBD avec ces mots.
2) Les colonnes ne faisant pas l'objet d'une fonction de regroupement dans le SELECT doivent toutes se retrouver dans le GROUP BY, sinon les valeurs affichées par les colonnes manquantes sont aléatoires. Tout autre SGBD que MySQL aurait refusé ta requête.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/02/2011, 15h45   #4
Invité régulier
 
Inscription : août 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 13
Points : 6
Points : 6
Question:

Si il avait voulu la valeur de si_message correspondant a max(date) qu'elle aurait été la requete.

D'avance merci
sebonsun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 16h33   #5
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 993
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 993
Points : 18 243
Points : 18 243
Envoyer un message via MSN à CinePhil
Il faut faire une jointure de ma requête avec la table dont on veut extraire l'info et mettre une condition de restriction sur l'égalité avec la date max.

Il y a de nombreux exemple de ce genre de truc dans les forums BDD de Developpez.com.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 18h10   #6
Membre régulier
 
Avatar de monlou
 
Inscription : janvier 2010
Messages : 265
Détails du profil
Informations personnelles :
Âge : 59
Localisation : Canada

Informations forums :
Inscription : janvier 2010
Messages : 265
Points : 73
Points : 73
merci cinePhil tres apprécié
cependant, j'ai du ajouter dans mon SELECT id et pseudo pour les extraires dans mon tableau

Merci!
__________________
Ils ne savaient pas que c'était impossible, alors ils l'ont fait!
Mark Twain.
monlou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2011, 02h01   #7
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 993
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 993
Points : 18 243
Points : 18 243
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par monlou Voir le message
cependant, j'ai du ajouter dans mon SELECT id et pseudo pour les extraires dans mon tableau
Et bien sûr tu as mis ces colonnes dans le GROUP BY pour appliquer ce que j'ai écrit dans mon précédent message ?
Citation:
Envoyé par CinePhil
2) Les colonnes ne faisant pas l'objet d'une fonction de regroupement dans le SELECT doivent toutes se retrouver dans le GROUP BY, sinon les valeurs affichées par les colonnes manquantes sont aléatoires.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h29.


 
 
 
 
Partenaires

Hébergement Web