Bonjour,
J'ai un petit problème avec des jointures externe
Rapidement, mon modèle: des lignes-commande (numéro_commande,ligne_commande,numero_facture), peuvent avoir zéro ou plusieurs commissions
Si je fais une requete sans m'occuper des commissions:
me retourne 2990 lignes
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
19
20
21
22
23 SELECT DWH_IND_CMD.NUM_CMD_PK, DWH_IND_CMD.NUM_LG_PK, sum(case when DWH_IND_CMD.TOP_BLOCAGE_FACT = '8' then DWH_IND_CMD.MT_CAN end) FROM DWH_IND_CMD, DWH_FACT, DWH_CLIENT, DWH_FAM_HIER_CLI, DWH_FAM_HIER_C_CLI WHERE ( DWH_CLIENT.CD_CLIENT_PK=DWH_IND_CMD.CD_CLI_FK and DWH_CLIENT.CD_FIL_PK=DWH_IND_CMD.CD_FIL_FK ) AND ( DWH_CLIENT.CD_FAM_HIER_CLI_FK=DWH_FAM_HIER_CLI.CD_FAM_HIER_CLI_PK ) AND ( DWH_FAM_HIER_CLI.CD_FAM_HIER_C_CLI_FK=DWH_FAM_HIER_C_CLI.CD_FAM_HIER_C_CLI_PK ) AND ( DWH_IND_CMD.NUM_FACT_PK=DWH_FACT.NUM_FACT_PK(+) ) AND ( DWH_FAM_HIER_C_CLI.FAM_HIER_C_CLI = 'GMS FRANCE' AND ( DWH_FACT.DT_FACT BETWEEN to_date('01/03/2008') AND to_date('31/03/2008') ) ) GROUP BY DWH_IND_CMD.NUM_CMD_PK, DWH_IND_CMD.NUM_LG_PK
Si j'ajoute mes commissions:
me retourne 2797 lignes
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
19
20
21
22
23
24
25
26
27 SELECT DWH_IND_CMD.NUM_CMD_PK, DWH_IND_CMD.NUM_LG_PK, sum(case when DWH_IND_CMD.TOP_BLOCAGE_FACT = '8' then DWH_IND_CMD.MT_CAN end) FROM DWH_IND_CMD, DWH_FACT, DWH_CLIENT, DWH_FAM_HIER_CLI, DWH_FAM_HIER_C_CLI, DWH_AGENT, DWH_COMMISSION WHERE ( DWH_CLIENT.CD_CLIENT_PK=DWH_IND_CMD.CD_CLI_FK and DWH_CLIENT.CD_FIL_PK=DWH_IND_CMD.CD_FIL_FK ) AND ( DWH_CLIENT.CD_FAM_HIER_CLI_FK=DWH_FAM_HIER_CLI.CD_FAM_HIER_CLI_PK ) AND ( DWH_FAM_HIER_CLI.CD_FAM_HIER_C_CLI_FK=DWH_FAM_HIER_C_CLI.CD_FAM_HIER_C_CLI_PK ) AND ( DWH_IND_CMD.NUM_FACT_PK=DWH_FACT.NUM_FACT_PK(+) ) AND ( DWH_AGENT.CODE_AGENT=DWH_COMMISSION.NUM_AGENT_PK(+) ) AND ( DWH_IND_CMD.NUM_CMD_PK(+)=DWH_COMMISSION.NUM_CMD_PK and DWH_IND_CMD.NUM_LG_PK(+)=DWH_COMMISSION.NUM_LG_PK and DWH_IND_CMD.NUM_FACT_PK(+)=DWH_COMMISSION.NUM_FACT_PK ) AND ( DWH_FAM_HIER_C_CLI.FAM_HIER_C_CLI = 'GMS FRANCE' AND ( DWH_FACT.DT_FACT BETWEEN to_date('01/03/2008') AND to_date('31/03/2008') ) ) GROUP BY DWH_IND_CMD.NUM_CMD_PK, DWH_IND_CMD.NUM_LG_PK;
j'ai beau retourner le problème dans tous les sens, il me manque toujours les lignes commande qui n'ont pas de commissions.
si je fais requete A MINUS requete B, je retrouve bien ces lignes.
Si quelqu'un peu m'aider...je suis preneur.
A bientôt
juva
Partager