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 et SQL. Discussion :

Affichage date plus récente dans requête champ expression


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 24
    Points : 16
    Points
    16
    Par défaut Affichage date plus récente dans requête champ expression
    Bonjour,

    dans ma requête je parviens à afficher seulement 1 fois le même code projet avec la date la plus récente dans une colonne (plusieurs date pour un code projet) grâce à max, mais j'ai un champ calculé dans une autre colonne avec une expression contenant cette même date et la nature de la réunion (concaténés). Et là bizarrement, le résultat ne donne pas la même date (plus récente) mais choisit (aléatoirement?) une des dates. J'ai tout essayé (ou presque) "max", "dernier", rien n'y fait.

    Voici le code SQL:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT [A- Liste Projets].[Code Project], Max([B- Liste RP et CIO].Datemeeting) AS MaxDeDate, [A- Liste Projets].Status, Max(([Datemeeting] & " " & [Nature] & " " & [type])) AS [Last Gate]
    FROM [B- Liste RP et CIO] INNER JOIN ([A- Liste Projets] INNER JOIN [zzz Détail ZRP/CIOs] ON [A- Liste Projets].[Code Project] = [zzz Détail ZRP/CIOs].[Code Projet]) ON [B- Liste RP et CIO].Meeting = [zzz Détail ZRP/CIOs].Meeting
    GROUP BY [A- Liste Projets].[Code Project], [A- Liste Projets].Status
    HAVING ((([A- Liste Projets].Status)="en développement"));

    Merci d'avance,

    SL

  2. #2
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Citation Envoyé par sl1980
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    Max(([Datemeeting] & " " & [Nature] & " " & [type])) AS [Last Gate]
    t'as essayé de concaténer après le calcul du max ?
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    (Max([Datemeeting]) & " " & [Nature] & " " & [type]) AS [Last Gate]

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Oui il me met un message d'erreur :
    "Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée <nom> comme une partie de la fonction d'agrégat. "
    Je ne sais pas ce que cela veut dire..

  4. #4
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Essaie quelque chose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Max([Datemeeting]) & " " & First([Nature]) & " " & First([type])) AS [Last Gate]

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Oui cela a l'air de fonctionner parfaitement merci beaucoup.

    A quoi cela est-il dû (si possible d'avoir une brève explication)?

    Merci encore,

    SL

  6. #6
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Citation Envoyé par sl1980
    Oui cela a l'air de fonctionner parfaitement merci beaucoup.

    A quoi cela est-il dû (si possible d'avoir une brève explication)?

    Merci encore,

    SL

    Dans une requête regroupement, le SELECT ne peut comporter que des éléments représentant un traitement d'agrégat (SUM, COUNT, MAX, FIRST...) ou des éléments présents dans la clause GROUP BY.


    En passant une petite optimisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT...,[A- Liste Projets].Status,.... 
    FROM ...
     
    GROUP BY [A- Liste Projets].[Code Project], [A- Liste Projets].Status
    HAVING ((([A- Liste Projets].Status)="en développement"));
    Cette syntaxe suppose de faire un regroupement par status pour ensuite ne garder qu'un status donné.
    Si comme je suppose, le statut n'est pas utile dans le résultat de la requête (puisqu'une valeur est sélectionnée en dur), il vaut mieux le retirer du SELECT et du GROUP BY et remplacer le Having par un WHERE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT.......  
    FROM ...
    WHERE  ((([A- Liste Projets].Status)="en développement"))
    GROUP BY [A- Liste Projets].[Code Project]

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Merci
    SL

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

Discussions similaires

  1. Date la plus récente dans requête
    Par Falxoune dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 20/08/2011, 19h32
  2. recherche de la date la plus récente dans une requete
    Par isabelle b dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 17/05/2008, 18h30
  3. Réponses: 3
    Dernier message: 25/07/2007, 18h28
  4. Rechercher la date la plus récente dans une BD
    Par kurkaine dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/07/2006, 20h10
  5. Réponses: 2
    Dernier message: 13/03/2006, 00h41

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