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.