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.
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).
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) );
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).
Merci de votre aide.
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;





Répondre avec citation
Partager