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

MS SQL Server Discussion :

Requête SQL : récupérer la valeur max


Sujet :

MS SQL Server

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Points : 122
    Points
    122
    Par défaut Requête SQL : récupérer la valeur max
    Bonjour à tous

    Je travaille sous SQL Server 2005.
    J'ai la table stats qui contient les champs id_stats et date.
    Je veux récupérer l'id_stats qui a la date la plus récente.
    Ma requête est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select top 1 id_stats from stats order by date desc
    Cette requête marche mais je ne veux pas du "top 1" parce que je vais inclure la requête dans une autre, et je ne peux pas me limiter à récupérer une seule ligne

    J'ai essayé d'utiliser la fonction max() mais je n'y arrive pas. Merci si vous y arrivez

  2. #2
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT id_stats 
    FROM stats 
    WHERE date = (SELECT MAX(date) FROM stats) ;
    ou 'IN' au lieu de '=' si le MAX(date) ne ramène pas qu'1 singleton.

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par TheLeadingEdge
    ou 'IN' au lieu de '=' si le MAX(date) ne ramène pas qu'1 singleton.
    Comment peut-on avoir plusieurs MAX ?

    Plusieurs lignes ayant la même date maximum, c'est possible, mais cela ne fait toujours qu'un seul MAX
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  4. #4
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Citation Envoyé par Médiat
    mais cela ne fait toujours qu'un seul MAX
    +1

    Tu as (encore) raison . Perfectionniste va

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Points : 122
    Points
    122
    Par défaut
    Ton code répond à ma question
    Mais je me rends compte que mon problème est plus compliqué en fait. J'ai passé des heures sur cette maudite requête...

    Voici le truc, simplifié. Un member enregistré sur le site web peut avoir plusieurs pseudo, et pour chaque pseudo, il a des stats (victoires - défaites) historisées par date

    => 3 tables liées par les champs "id_..." :
    - member (id_member)
    - pseudo (id_pseudo, id_member, pseudo)
    - stats (id_stats, id_pseudo, win, loss, creation_date)

    Mon point d'entrée est id_member=35 par exemple.
    Pour ce membre, je veux récupérer tous ses pseudos et pour chaque pseudos, je veux récupérer les stats qui correspondent et qui ont leur creation_date la plus récente. Et si il n'a pas de stats associées à un pseudo, il faut quand-même retourner le pseudo avec des stats NULL.

    L'idéal, c'est d'obtenir un résultat de requête comme ça :
    "pseudo1" - 12 (win) - 8 (loss) - "15/08/2006"
    "pseudo2" - NULL (win) - NULL (loss) - "19/08/2006" -- pas de stats
    "pseudo3" - 13 (win) - 11 (loss) - "19/08/2006"

    Je n'ai plus de cheveux
    Si vous pouvez m'aider, ça serait super gentil
    Merci d'avance

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Testé avec ORACLE (j'ai un problème avec SQLExpress )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT p.Pseudo, s.Win, s.Loss, s.Creation_Date
    FROM   Pseudo p left join Stats s
                           on p.Id_Pseudo = s.Id_Pseudo
                          and s.Creation_Date = (SELECT MAX(Creation_Date)
                                                 FROM Stats s1
                                                 WHERE s1.Id_Pseudo = s.ID_Pseudo)
    WHERE  Id_Member = 35
    [Edit]J'ai ré-installé SQLExpress,: ça marche aussi [/Edit]
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  7. #7
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Points : 122
    Points
    122
    Par défaut
    Oh my GOD, u made it!!!!!
    Comment t'as fait ??? T'as triché
    Bin bravo et merci d'avoir même testé!
    Ca marche sur mon SQL Server

    En fait, z'étais tout près mais comme chui nul en left inner right join...
    Merci infiniment!!

Discussions similaires

  1. Récupérer la valeur max ou min d'une sous requête
    Par GhostSpirit dans le forum Requêtes
    Réponses: 5
    Dernier message: 04/02/2015, 20h16
  2. Requête SQL : récupérer un top rattaché à une colonne ?
    Par SetaSensei dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/02/2008, 18h24
  3. [SQL] Récupérer plusieurs valeurs
    Par bogsy15 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 09/08/2006, 10h46
  4. [SQL] Problème requête sql,rajouter une valeur,checbox
    Par snakejl dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/06/2006, 11h18
  5. [VB.NET] [SQL] Pb requête sql, récupérer des params. ?
    Par Pleymo dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/02/2005, 20h15

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