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 :

Requete autojointure ou jointure externe


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Par défaut Requete autojointure ou jointure externe
    bonjour, je cherche à faire la somme du nombre de validation (Compteur.NbValidation) pour, à la fois le Type de Validation = 'monte' et aussi Type de Validation = 'corres' (ValidationCpt.TypeValid), pour une Ligne précise (Validation.Ligne) et pour une date (Statbus.DateStat) et un idTitre donnés, dans une même requête.
    Mon problème est que je n'y arrive pas même avec des jointure externe ou des auto-jointures.

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    CREATE TABLE StatBus
    (
        IdStatBus NUMBER NOT NULL,
        DateStat DATE NOT NULL,
        CONSTRAINT PK_StatBus PRIMARY KEY (IdStatBus)
    );
     
    CREATE TABLE Validation
    (
        IdValidation NUMBER NOT NULL,
        IdStatBus NUMBER NOT NULL REFERENCES StatBus(IdStatBus),
        IdLigne NUMBER NOT NULL REFERENCES Scott.Lignes(IdLignes),
        CONSTRAINT PK_Validation PRIMARY KEY (IdValidation)
    );
     
    CREATE TABLE Compteur
    (
        IdCpt NUMBER NOT NULL,
        IdTitre NUMBER NOT NULL REFERENCES Titre(IdTitre),
        NbValidation NUMBER DEFAULT 0 NOT NULL,
        CONSTRAINT PK_Compteur PRIMARY KEY (Idcpt)
    );
     
     
    CREATE TABLE ValidationCpt
    (
        IdValidation NUMBER NOT NULL REFERENCES Validation(IdValidation),
        IdCpt NUMBER NOT NULL REFERENCES Compteur(IdCpt),
        TypeValid NVARCHAR2(5) NOT NULL,
        CONSTRAINT PK_CptMontee PRIMARY KEY(IdValidation, IdCpt)
    );
    A savoir que pour un statbus, on a plusieurs validation, pour une validation, on a plusieur Compteur (et donc plusieurs validationCpt). La souci est que pour une validation, on peut avoir 1 type ou 2 type de validation (TypeValid).

    Voilà, une requête qui fonctionne mais avec celle-ci je ne récupère que la somme des nbValidation du type : 'monte', or je voudrai en une requête récupérer les deux somme différentes (ou 0).
    Code sql : 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 
        sum(c.nbvalidation)
    from 
        statbus s
        Inner Join validation v
            ON s.idstatbus = v.idstatbus
            Inner Join validationcpt vc
                ON v.idvalidation = vc.idvalidation
                Inner Join compteur c
                    ON vc.idcpt = c.idcpt
    where 
        s.datestat = to_date(P_Date,'DD/MM/YY')
        and v.idligne = P_IdLigne
        and vc.typevalid = 'monte'
        and c.idtitre = P_IdTitre;
    Merci de votre aide.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 031
    Billets dans le blog
    6
    Par défaut
    Pouvez vous nous poster un jeu d'essais ???? (sous forme DDL bien entendu...)

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Et un petit GROUP BY vc.typevalid avec un filtre approprié ne resoudrait pas votre problème ???

    Bon Courage

  4. #4
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Par défaut
    Bonjour,
    en effet un group by TypeValid, ressout le problème ...
    Ma solution :
    Code sql : 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
     
    select 
    	sum(c.nbvalidation) Total,
    	vc.typevalid Typ
    from 
    	statbus s
    	INNER JOIN validation v
    		ON s.idstatbus = v.idstatbus
    		INNER JOIN validationcpt vc
    			ON v.idvalidation = vc.idvalidation
    			INNER JOIN compteur c
    				ON vc.idcpt = c.idcpt
    where 
    	s.datestat = to_date(P_Dat,'DD/MM/YY')
    	and v.idligne = P_IdLign
    	and c.idtitre = P_IdTitr
    group by
    	vc.typevalid;

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

Discussions similaires

  1. requete uniquement de jointures externes
    Par meric92 dans le forum Requêtes
    Réponses: 10
    Dernier message: 10/06/2011, 11h44
  2. Requete Jointure Externe...Soucis!!
    Par paflolo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/03/2006, 12h25
  3. requete avec double jointure externe
    Par cdu dans le forum Langage SQL
    Réponses: 8
    Dernier message: 04/01/2006, 15h54
  4. [requetes / Jointures externes] : expression de jointure
    Par Ptit_boeuf dans le forum Langage SQL
    Réponses: 5
    Dernier message: 28/07/2005, 17h42
  5. [Requete] jointure externe -> where
    Par MrDuChnok dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/07/2004, 16h48

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