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 :

dernier commentaire planning : Planning ayant la date de commentaire la plus récente


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 34
    Par défaut dernier commentaire planning : Planning ayant la date de commentaire la plus récente
    Bonjour,

    J'ai une base avec des tables de plus de 7000 lignes et pour 3 d'entre elles ( PROJET, PLANNING, COMMENTAIRE) je veux afficher le dernier commentaire de tous PLANNING confondus de chaque projet

    Plus de 300 projets avec chacun au moins 10 planning donc afficher le planning ayant la date de commentaire la plus recente ainsi que le codeProjet et le nom du PROJET associé.

    Un exemple avec les 3 tables (cijoint un fichier avec l'exemple car n'arrive pas à inserer les table ):

    PROJET

    id codeProjet NomProjet commentaireProjet
    -------------------------------------------------------------------
    11 001 Projet1
    12 002 Projet2 Amenagement


    PLANNING

    id nomPlanning projet_id
    -------------------------------------------------------------------
    71 Planning1 12
    72 Planning2 12
    73 Planning3 12
    74 Planning4 12


    COMMENTAIRE

    id date_derniere_modif id_objet type_objet Commentaire
    ---------------------------------------------------------------------
    91 2010-04-12 72 PLANNING MAJ1_Planning_2
    92 2010-05-25 72 PLANNING MAJ2_Planning_2
    93 2010-09-11 73 PLANNING MAJ1_Planning_3
    94 2010-10-12 11 PROJET Creation Projet1
    95 2011-03-19 74 PLANNING MAJ1_Planning_4
    96 2011-06-21 72 PLANNING MAJ3_Planning_2
    97 2011-07-14 12 PROJET MAJ Projet2
    98 2011-09-27 73 PLANNING MAJ2_Planning_3



    Ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT PROJ.codeProjet, PROJ.nomProjet, PLAN.nomPlanning, 
    COMMENT.date_derniere_modif as date_modif ,COMMENT.commentaire
     
    FROM PROJET PROJ
     
    LEFT JOIN PLANNING PLAN ON PROJ.id = PLAN.project_id 
    LEFT JOIN COMMENTAIRE COMMENT ON 
    COMMENT. date_derniere_modif = 
    (select max(C.date_derniere_modif) from COMMENTAIRE C where C.id_ojet = PLAN.id )
     
    WHERE PROJ.commentaireProjet IS NOT NULL
     
    GROUP BY PROJ.codeProjet, PROJ.nomProjet, PLAN.nomPlanning, 
    COMMENT.date_derniere_modif, COMMENT.commentaire
    le resultat :

    codeProjet nomProjet nomPlanning date_modif commentaire
    -----------------------------------------------------------------------
    002 Projet2 Planning2 2011-06-21 MAJ3_Planning2
    002 Projet2 Planning3 2011-09-27 MAJ2_Planning3
    002 Projet2 Planning4 2011-03-19 MAJ1_Planning4


    Mais voici ce que je veux extraire et aficher



    codeProjet nomProjet nomPlanning date_modif commentaire
    ----------------------------------------------------------------------
    002 Projet2 Planning3 2011-09-27 MAJ2_Planning_3



    Quelqu'un a-t-il une idée de la solution et merci de votre reponse à
    l 'avance ?
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    bonjour,

    quel est votre SGBD..?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 132
    Par défaut
    As tu essayé avec la fonction MAX sur ta date, pour avoir la plus récente ?
    En mettant bien le GROUP BY comme il faut.

  4. #4
    Membre très actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Par défaut
    Bonjour,

    Si tu veux le dernier commentaire tous projets confondus , alors il faut décoréler ta sous requete.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT PROJ.codeProjet
         , PROJ.nomProjet
         , PLAN.nomPlanning
         , COMMENT.date_derniere_modif as date_modif 
         , COMMENT.commentaire
     FROM PROJET PROJ
     INNER JOIN PLANNING PLAN ON PROJ.id = PLAN.project_id 
     INNER JOIN COMMENTAIRE COMMENT ON COMMENT.id_objet = PLAN.id
     WHERE PROJ.commentaireProjet IS NOT NULL
     AND COMMENT.date_derniere_modif = (select max(C.date_derniere_modif) 
      from COMMENTAIRE C )
    ;

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 34
    Par défaut Le planning ayant la date de commentaire la plus récente pour un projet donné.
    SGBD PostgreSQL

    Pour être un peut plus clair :
    Le planning ayant la date de commentaire la plus récente pour un projet donné.

    Par exemple le projet 12 à 3 planning (1, 2, 3)
    Si le planning 3 à la date de commentaire la plus récente ( les trois planning confondus ) je veux pouvoir l'afficher ainsi que le code du projet.

    Cf fichier joint

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 34
    Par défaut
    Il ne s'agit pas de cela mais du dernier commentaire du planning ayant la date de commentaire la plus récente (tous planning confondus) d'un projet donné
    Citation Envoyé par ORA-007 Voir le message
    Bonjour,

    Si tu veux le dernier commentaire tous projets confondus , alors il faut décoréler ta sous requete.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT PROJ.codeProjet
         , PROJ.nomProjet
         , PLAN.nomPlanning
         , COMMENT.date_derniere_modif as date_modif 
         , COMMENT.commentaire
     FROM PROJET PROJ
     INNER JOIN PLANNING PLAN ON PROJ.id = PLAN.project_id 
     INNER JOIN COMMENTAIRE COMMENT ON COMMENT.id_objet = PLAN.id
     WHERE PROJ.commentaireProjet IS NOT NULL
     AND COMMENT.date_derniere_modif = (select max(C.date_derniere_modif) 
      from COMMENTAIRE C )
    ;

  7. #7
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    bonjour,


    vu que pgsql supporte les fonctions de fenetrage..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    with tmp as (
    select pla.projet_id, pla.nomPlanning, com.date_derniere_modif, com.Commentaire,
    row_number() over(partition by pla.projet_id order by com.date_derniere_modif desc) as rnk
    from PLANNING pla
    inner join COMMENTAIRE com on com.objet_id = pla.id)
     
     
    select prj.nomProjet, b.projet_id, b.nomPlanning, b.date_derniere_modif, b.Commentaire
    from projet prj
    inner join tmp b on prj.id = b.projet_id
    where b.rnk = 1

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 34
    Par défaut
    Merci punkoff ça marche merci encore et à tous ceux qui ont répondu à ma demande.

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

Discussions similaires

  1. [AC-2010] Création de planning mais pas par date
    Par jclm230759 dans le forum Access
    Réponses: 5
    Dernier message: 10/09/2014, 19h01
  2. Planning avec reprise de dates du. au.
    Par VEROLYDE dans le forum Excel
    Réponses: 3
    Dernier message: 27/01/2012, 10h52
  3. Réponses: 5
    Dernier message: 18/08/2009, 17h32
  4. Réponses: 2
    Dernier message: 12/11/2007, 18h28
  5. Date - comment rechercher la plus récente
    Par fab22montpellier dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/09/2005, 17h17

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