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

Langage SQL Discussion :

[MySQL 4.0] récupérer une entrée ayant un champs maximum ??


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Points : 7
    Points
    7
    Par défaut [MySQL 4.0] récupérer une entrée ayant un champs maximum ??
    Bonjour,

    J'ai dans ma table des utilisateurs. Pour un utilisateur de même id, il peut y avoir plusieurs entrées avec leurs dates de début et de fin qui peuvent avoir un nom différent, etc. Comme suit :

    id nom debut fin
    test test1 2002-04-19 2003-04-19
    test test2 2003-04-19 2004-04-19
    test test3 2004-04-19 2030-01-01
    toto toto 2004-04-19 2004-04-19


    Je veux pour chaque id différent obtenir les infos de celui qui a la date de fin la plus élevée.
    J'ai donc pensé à un MAX sur la date de fin et regroupé sur l'id, tout bêtement, comme suit :
    SELECT MAX(fin), id, nom, fin, debut
    FROM user
    GROUP BY id
    Quelle ne fut pas ma surprise de voir qu'il récupère bien la date max, mais pas l'id, nom, debut, fin qui correspondent à l'entrée qui a la date max :

    MAX( fin ) id nom fin debut
    2030-01-01 test test1 2003-04-19 2002-04-19
    2004-04-19 toto toto 2004-04-19 2004-04-19


    Comment faire pour récupérer non seulement la date max mais aussi les champs qui correspondent à l'entrée de date max, pas ceux d'une entrée au hasard !!??

  2. #2
    cdu
    cdu est déconnecté
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 196
    Points : 222
    Points
    222
    Par défaut
    salut,
    on peut surement faire mieux mais ça drevait passer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select u.id, u.nom,u.fin,u.début
    from user u
    where u.fin >= all ( select u2.fin from user u2
                               where u2.id=u.id)

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    requête SQL :
    SELECT u.id, u.nom, u.fin, u.deb
    FROM user u
    WHERE u.fin >=
    ALL (
    SELECT u2.fin
    FROM user u2
    WHERE u2.id = u.id
    )
    LIMIT 0 , 30
    MySQL a répondu:

    #1064 - Erreur de syntaxe près de 'ALL (
    SELECT u2.fin
    FROM user u2
    WHERE u2.id = u.id ) LIMIT 0, ' à la ligne 4

  4. #4
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    En espérant que ta version de MySQL accepte les sous-requête, tu peux t'inspirer de ce post-ci :
    http://www.developpez.net/forums/sho...t=33411&page=3
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Helas j'ai la version 4.0, pas d'imbrication ! Donc je ne pense pas que je solve mon problème tout en une requete SQL !

    Je me suis débrouillé pour faire une première requete qui récupère tous les id des utilisateurs, puis pour chaque id je récupère le max de la date et je crée une requete qui récupère les infos de l'entrée ayant cet id et cette date. Ca fait ce que je veux meme si c'est moins propre et qu'il faut plus de code.

    Merci pour votre aide !

Discussions similaires

  1. [MySQL] Récupérez la valeur de l'autoincrement d'une table
    Par dark_vidor dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 9
    Dernier message: 10/12/2009, 11h13
  2. Une erreur 233 de ms sql server
    Par Hokage dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/10/2009, 17h40
  3. Réponses: 5
    Dernier message: 19/04/2007, 12h45
  4. Réponses: 41
    Dernier message: 27/08/2006, 15h17
  5. [FAQ] [MySQL 4.1.9] nombre de tables d'une base
    Par ADSL[fx] dans le forum Langage SQL
    Réponses: 6
    Dernier message: 10/05/2006, 09h29

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