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

SQL Oracle Discussion :

Problème avec ma requête oracle


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Par défaut Problème avec ma requête oracle
    Bonjour,

    donc voici 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
    15
     
     
    SELECT TITRE,
              NOM,
              PRENOM,
              DTENAI,
              NUMCHAMBRE,
              COMPTERENDU,
              DTECRE
         FROM glit_situation s
              INNER JOIN patients p
                 ON p.numpat = s.numpat
              LEFT OUTER JOIN objets x
                 ON (x.numpat=s.numpat AND x.NUMSERV = 41) 
        WHERE numus = 208 AND NUMDESCRIPTION=20029 AND DEFFEN=20021 AND COMPTERENDU LIKE '179%'
    Ça me renvoie :



    mr cocu     dupont  27/10/2011
    mr simon    gorge    28/10/2011
    mr simon    gorge    27/10/2011
    mr edouart raphael  26/10/2011
    j'ai un doublon :

    mr simon    gorge    28/10/2011
    mr simon    gorge    27/10/2011
    Et je voudrais garder la ligne qui a la plus grande date !

    Donc je voudrais le résultat suivant:

    mr cocu     dupont  27/10/2011
    mr simon    gorge    28/10/2011
    mr edouart raphael  26/10/2011

    Comment puis je faire ??

    D'avance merci

  2. #2
    Membre Expert
    Femme Profil pro
    Data engineer
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Data engineer
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Bonjour,
    En utilisant l'aggrégation et le group by :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT TITRE,
              NOM,
              PRENOM,
              MAX(DTECRE)
         FROM glit_situation s
              INNER JOIN patients p
                 ON p.numpat = s.numpat
              LEFT OUTER JOIN objets x
                 ON (x.numpat=s.numpat AND x.NUMSERV = 41) 
        WHERE numus = 208 AND NUMDESCRIPTION=20029 AND DEFFEN=20021 AND COMPTERENDU LIKE '179%'
    GROUP BY TITRE,
              NOM,
              PRENOM

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Par défaut
    Merci de ton aide tedo01 ,

    Mais je dois aussi afficher un autre champ qui est différent pour chaque enregistrement et je dois garder celui avec "la date la plus grande"

    ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    mr cocu     dupont  27/10/2011  blabla1
    mr simon    gorge    28/10/2011  blabla2
    mr simon    gorge    27/10/2011  blalbla3
    mr edouart raphael  26/10/2011  blabla4
    Donc je voudrais le résultat suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    mr cocu     dupont  27/10/2011  blabla1
    mr simon    gorge    28/10/2011  blabla2
    mr edouart raphael  26/10/2011  blabla4

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    FIRST et LAST
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT TITRE, NOM, PRENOM,
           MAX(DTECRE) keep (dense_rank first order by dtecre desc) as dtecre,
           MAX(autre_champ) keep (dense_rank first order by dtecre desc) as autre_champ,
      FROM glit_situation s
     INNER JOIN patients p ON p.numpat = s.numpat
      LEFT OUTER JOIN objets x ON (x.numpat=s.numpat AND x.NUMSERV = 41) 
     WHERE numus = 208 
       AND NUMDESCRIPTION = 20029 
       AND DEFFEN = 20021 
       AND COMPTERENDU LIKE '179%'
     GROUP BY TITRE, NOM, PRENOM

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Par défaut
    Merci de ton aide(je ne connaissais pas first et last) .

    Mais je bloque toujours .

    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
     
     
    SELECT TITRE, NOM, PRENOM,
           MAX(DTECRE) keep (dense_rank first ORDER BY dtecre DESC) AS dtecre
      FROM glit_situation s
     INNER JOIN patients p ON p.numpat = s.numpat
      LEFT OUTER JOIN objets x ON (x.numpat=s.numpat AND x.NUMSERV = 41) 
     WHERE numus = 208 
       AND NUMDESCRIPTION = 20029 
       AND DEFFEN = 20021 
       AND COMPTERENDU LIKE '179%'
     GROUP BY TITRE, NOM, PRENOM
    Il m'affiche bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    mr cocu     dupont  27/10/2011  
    mr simon    gorge    28/10/2011 
    mr edouart raphael  26/10/2011
    Mais je n'arrive pas a rajouter mon champs compterendu(blabla) de type blob car ne peut pas faire un Group By !

    je voudrais avoir comme résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    mr cocu     dupont  27/10/2011  blabla1
    mr simon    gorge    28/10/2011  blabla2
    mr edouart raphael  26/10/2011  blabla4

  6. #6
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 128
    Par défaut
    Bonjour,

    C'est possible en modifiant le where :
    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 TITRE,
              NOM,
              PRENOM,
              DTENAI,
              NUMCHAMBRE,
              COMPTERENDU,
              DTECRE
         FROM glit_situation s
              INNER JOIN patients p
                 ON p.numpat = s.numpat
              LEFT OUTER JOIN objets x
                 ON (x.numpat=s.numpat AND x.NUMSERV = 41) 
        WHERE numus = 208 AND NUMDESCRIPTION=20029 AND DEFFEN=20021 AND COMPTERENDU LIKE '179%'
    and dtecre=(select max(dtecre) from...)

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Citation Envoyé par jacko842 Voir le message
    Mais je n'arrive pas a rajouter mon champs compterendu(blabla) de type blob car ne peut pas faire un Group By !
    Oui si l'autre_champ est de type blob il faut passer par une fonction de fenêtrage comme proposé par Punkoff.

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

Discussions similaires

  1. Probléme avec une requéte mysql(Oracle 9)
    Par lmkrte dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/03/2007, 22h41
  2. Problème avec une requête
    Par demonark dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/09/2005, 05h35
  3. Problème avec une requête
    Par ringostarr dans le forum Langage SQL
    Réponses: 5
    Dernier message: 19/04/2005, 20h34
  4. Problème avec une requête
    Par snoopy69 dans le forum Débuter
    Réponses: 2
    Dernier message: 20/01/2005, 12h39
  5. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29

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