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 :

[SQL] Problème de group by


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Par défaut [SQL] Problème de group by
    Salut !

    J'ai un petit souci avec une requête qui utilise une clause group by.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT demande.id, demande.date_creation, compte.nom, civilite.libelle || ' ' || contact.nom INTITULE, demande.commentaire, SUM(recherche.nb_inter) INTER
    FROM demande, contact, compte, civilite, recherche
    WHERE demande.id_contact = contact.id
    AND contact.id_compte = compte.id
    AND civilite.id = contact.id_civilite
    AND recherche.id_demande = demande.id
    AND compte.id=120
    GROUP BY demande.id, demande.date_creation, compte.nom, civilite.libelle || ' ' || contact.nom, demande.commentaire;
    Je cherche a extraire les demandes d'un compte et pour chacune de ces demandes, je fais la somme des intervenants (recherche.nb_inter). Le problème est que dans ma table demande, j'ai 10 enregistrement pour le compte n° 120 et seulement 2 demandes sont retournées. Dans la table recherche, j'ai définit un nombre d'intervenants pour seulement 2 demandes (parmi les 10) et j'ai remarqué qu'en ajoutant un enregistrement dans cette table pour une autre demande, ma requête me retourne un enregistrement de +.

    En gros j'aimerai avoir toutes les demandes d'un compte même si aucun intervenant n'est défini dans la table recherche.

    Désolé si ce n'est pas super clair, je peux réexpliquer en cas de besoin.

    Voici la structure de mes tables :

    Demande :
    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
    16
    17
    18
    19
    20
    21
     
    Name                            Null?    Type
    ------------------------------- -------- ----
    ID                              NOT NULL NUMBER(11)
    ID_CONTACT                      NOT NULL NUMBER(7)
    ID_ETAT                         NOT NULL NUMBER(2)
    CLIENT_FINAL                             VARCHAR2(50)
    TOTAL                                    NUMBER(8)
    DATE_DEBUT_CONTRAT                       DATE
    DATE_CONCLUSION                          DATE
    LIEU_INTERVENTION                        VARCHAR2(50)
    DPT_INTERVENTION                         VARCHAR2(2)
    CHANCE                                   NUMBER(3)
    COMMENTAIRE                              VARCHAR2(250)
    TYPE_PRESTATION                          NUMBER(1)
    DATE_CREATION                   NOT NULL DATE
    USER_CREATION                   NOT NULL NUMBER(6)
    DATE_MODIF                      NOT NULL DATE
    USER_MODIF                      NOT NULL NUMBER(6)
    ID_CONCLUSION                            NUMBER(2)
    CODE_OFFRE                               NUMBER(6)
    Recherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Name                            Null?    Type
    ------------------------------- -------- ----
    ID_DEMANDE                      NOT NULL NUMBER(11)
    CODE_PROFIL                     NOT NULL NUMBER(2)
    CODE_COMPETENCE                 NOT NULL NUMBER(6)
    NB_INTER                                 NUMBER(3)
    DUREE                                    NUMBER(5)
    PVJ                                      NUMBER(5)
    FRAIS                                    NUMBER(5)
    Merci d'avance pour vos réponses...

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Par défaut
    Désolé pour ce post inutile ! J'ai juste supprimé une ligne et j'ai bien tous les résultats qu'il me faut !

    La ligne à supprimer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AND recherche.id_demande = demande.id

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Par défaut
    Nouveau problème, car en supprimant cette ligne, la valeur de SUM(recherche.nb_inter) est la même pour chaque demande donc je ne peux pas la supprimer !

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Par défaut
    C'est bon j'ai la solution :

    J'ai utilisé LEFT OUTER JOIN pour faire une jointure entre demande et recherche à la place de recherche.id_demande = demande.id dans la clause WHERE.

    La syntaxe, si ça peut aider qqun un jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FROM demande left outer join recherche on recherche.id_demande = demande.id
    J'obtiens bien tous les enregistrements voulus même si sum retourne null.

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

Discussions similaires

  1. [SQL] Problème group by sur view
    Par helene34 dans le forum Oracle
    Réponses: 2
    Dernier message: 04/01/2007, 08h25
  2. [SQL] problème sur un group by
    Par d_token dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/09/2006, 10h38
  3. [SQL] problème avec les date et les group By
    Par Stef784ever dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/11/2004, 09h18
  4. [Debutant][Join Sql] problème de join
    Par ultimax dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/11/2004, 12h01
  5. Réponses: 9
    Dernier message: 17/01/2004, 10h51

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