Suite avec une bdd test : une vue
Pour en finir avec mon test, j'ai voulu aussi "remplacer/tester" la table recap par une vue
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
CREATE VIEW vue_recap AS
WITH O AS (
SELECT NUM_COMPTE,
SUM(IIF(CREDIT_DEBIT = 1, MONTANT, -MONTANT) ) TOTAL,
SUM(IIF(CREDIT_DEBIT = 1, MONTANT, 0) ) ACTIF,
SUM(IIF(CREDIT_DEBIT = 0, MONTANT, 0) ) PASSIF
FROM OPERATIONS
GROUP BY NUM_COMPTE
)
SELECT c.id_compte,
c.libelle,
COALESCE(o.actif, 0) Actif,
Coalesce(o.passif, 0) passif,
coalesce(o.total, 0) total
FROM Comptes c
LEFT JOIN
O ON o.num_compte = c.id_compte; |
REMARQUE l'utilisation d'une vue permettrait de ne pas utiliser les triggers et du coup rend la table recap caduque
Bien sûr, comme tu le remarqueras, j'utilise toutes les techniques "modernes" du SQL :
- les Common Table Expressions (CTE), déclarées par WITH .....
- Les jointures LEFT JOIN
- etc...
Mais, à ma souvenance, j'avais déjà proposé une syntaxe similaire dans une autre discussion.
Pourquoi il me manquait des billes ?
J'ai l'impression qu'il s'agit d'un pseudo programme de comptabilité (je déteste cette matière) d'association ?. Dans les dernières propositions que j'ai faites j'ai donc considéré que les "écritures" (opérations) n'était pas modifiables une fois créées.
On n'a pas non plus évoqué le nombre de comptes ni d'opérations (question performances ça joue).
Je n'ai pas pris en compte la colonne 'Imputation_compte' facile à intégrée dans une vue mais pas dans les triggers. À expliquer en cas de trigger, que faire dans la table recap si cette colonne est modifiée !?)