IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Besoin d'aide sur une requete avec jointure et MAX()


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 53
    Points
    53
    Par défaut Besoin d'aide sur une requete avec jointure et MAX()
    Bonjour à tous
    J'essaye depuis un moment déjà de faire une requete sans arriver à obtenir le résultat que je souhaite malheureusement.
    A force de me prendre la tête je suis persuadé que je m'éloigne de la solution...
    C'est pourquoi j'en viens à votre aide !

    J'ai une table historique que je vais résumer ainsi :
    id | date | entier | string

    1 | xx | 22 | aa
    2 | xx | 22 | bb
    3 | xx | 22 | cc
    4 | xx | 66 | dd
    5 | xx | 11 | ee
    6 | xx | 11 | ff
    7 | xx | 66 | gg
    8 | xx | 11 | hh
    9 | xx | 11 | ii
    10| xx | 22 | jj

    Je veux juste obtenir le dernier enregistrement de chaque valeur dans le champ entier
    C'est à dire 7, 9 et 10
    Donc 3 lignes dans le résultat :
    7 | xx | 66 | gg
    9 | xx | 11 | ii
    10| xx | 22 | jj

    Une idée ?

    J'ai essayé déjà pas mal de trucs mais sans succés.

    Merci d'avance pour votre aide !

    JS

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 142
    Points : 185
    Points
    185
    Par défaut
    Tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT MAX(id), date, entier, string FROM historique GROUP BY entier

  3. #3
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 53
    Points
    53
    Par défaut
    Merci de répondre rapidement,

    J'avais déjà tenté cette requête et curieusement cela ne me renvoyait pas les enregistrements corrects. J'ai quand même réessayé et le résultat est effectivement incorrect...
    En reprenant mon exemple simple, voici ce que cela me donne :
    7 | xx | 66 | dd
    9 | xx | 11 | ee
    10| xx | 22 | aa

    C'est à dire que l'on a bien les derniers id de chaque valeur, mais par contre les enregistrements (date, entier et string) correspondent aux premiers dans la table..

    Entre temps j'ai continué mes recherches, et j'ai réussi à obtenir exactement ce que je voulais...!
    Mais alors avec une requête de fou..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT h.* FROM historique h
    INNER JOIN (SELECT MAX(hh.id) idmax,hh.entier FROM historique hh GROUP BY hh.entier) maxrequete ON h.id = maxrequete.idmax
    Ca marche bien, mais bon ça m'étonne d'en arriver à des requêtes de ce genre pour un simple résultat...
    Dites moi ce que vous en pensez!

    Merci encore

    JS

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 142
    Points : 185
    Points
    185
    Par défaut
    Effectivement, je suis allé trop vite en besogne ! Désolé.

    Le champs string n'est contenu ni dans une fonction d'agrégat, ni dans la clause Group By, ma requête n'était donc pas propre du tout.

    C'est déjà bien que MySQL n'ait pas retourné d'erreur (MSDE en retourne par exemple dans ce cas). Et c'est normal que la valeur du champs string retournée ne soit pas celle que tu voulais puisque le serveur n'a aucun moyen de savoir celle qu'il faut retourner. Il prend donc celle du 1er enregistrement trouvé certainement.

    Sinon ta requête est tout à fait correcte. En voila une autre qui devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id, date, entier, string from historique AS h1 WHERE id IN (SELECT max(id) FROM historique AS h2 GROUP BY entier)

  5. #5
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 53
    Points
    53
    Par défaut
    Bon 2 requêtes pour le prix d'une !
    Merci pour ton intervention et ton support.
    Bonne continuation

    JS

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin aide sur une requête avec jointure
    Par PoichOU dans le forum Requêtes
    Réponses: 3
    Dernier message: 31/08/2010, 18h32
  2. aide sur une requete avec jointures
    Par astroseb dans le forum Requêtes
    Réponses: 4
    Dernier message: 18/08/2010, 13h59
  3. Pb sur une requete avec jointure droite
    Par crashyear dans le forum Langage SQL
    Réponses: 3
    Dernier message: 06/02/2007, 08h06
  4. Besoin d'aide sur une requete
    Par ideal dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/09/2006, 11h43
  5. Besoin d'aide sur une requete ds un trigger
    Par ideal dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 15/02/2006, 10h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo