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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
| --------------
drop procedure if exists test_cumlan
--------------
--------------
CREATE PROCEDURE test_cumlan (IN filtreDate Date,
IN dat Date)
BEGIN
SELECT M.mvt_id,
M.mvt_date,
COALESCE( R.cr_ref, D.cD_ref ) AS reference,
COALESCE( R.cr_motif, D.cD_motif ) AS motif,
COALESCE( R.cr_montant, 0 ) AS recette,
COALESCE( D.cd_montant, 0 ) AS depense,
@cumul := @cumul + COALESCE( R.cr_montant, 0 ) - COALESCE( D.cd_montant, 0 ) AS cumul
FROM mouvement M
LEFT JOIN entree E ON M.mvt_id = E.mvt_id
LEFT JOIN carnetrecette R ON E.cr_id = R.cr_id
LEFT JOIN sortie S ON M.mvt_id = S.mvt_id
LEFT JOIN carnetdepense D ON S.cd_id = D.cd_id,
(SELECT @cumul := 0) tmp
WHERE mvt_date BETWEEN filtreDate AND dat
ORDER BY M.mvt_date
;
END
--------------
--------------
call test_cumlan ('2015-11-20', '2015-11-26')
--------------
+--------+------------+-----------+--------+---------+---------+---------+
| mvt_id | mvt_date | reference | motif | recette | depense | cumul |
+--------+------------+-----------+--------+---------+---------+---------+
| 5 | 2015-11-20 | 2356 | hhjvjh | 280000 | 0 | 280000 |
| 6 | 2015-11-24 | 1523 | cfhjvj | 0 | 100000 | 180000 |
| 7 | 2015-11-25 | 1010 | fhjgfj | 0 | 300000 | -120000 |
| 8 | 2015-11-25 | 1013 | jkgjkg | 500000 | 0 | 380000 |
| 13 | 2015-11-26 | 2356 | hhjvjh | 280000 | 0 | 660000 |
+--------+------------+-----------+--------+---------+---------+---------+
--------------
SELECT M.mvt_id,
M.mvt_date,
COALESCE( R.cr_ref, D.cD_ref ) AS reference,
COALESCE( R.cr_motif, D.cD_motif ) AS motif,
COALESCE( R.cr_montant, 0 ) AS recette,
COALESCE( D.cd_montant, 0 ) AS depense,
@cumul := @cumul + COALESCE( R.cr_montant, 0 ) - COALESCE( D.cd_montant, 0 ) AS cumul
FROM mouvement M
LEFT JOIN entree E ON M.mvt_id = E.mvt_id
LEFT JOIN carnetrecette R ON E.cr_id = R.cr_id
LEFT JOIN sortie S ON M.mvt_id = S.mvt_id
LEFT JOIN carnetdepense D ON S.cd_id = D.cd_id,
(SELECT @cumul := 0) tmp
WHERE mvt_date BETWEEN '2015-11-20' AND '2015-11-26'
ORDER BY M.mvt_date
--------------
+--------+------------+-----------+--------+---------+---------+---------+
| mvt_id | mvt_date | reference | motif | recette | depense | cumul |
+--------+------------+-----------+--------+---------+---------+---------+
| 5 | 2015-11-20 | 2356 | hhjvjh | 280000 | 0 | 280000 |
| 6 | 2015-11-24 | 1523 | cfhjvj | 0 | 100000 | 180000 |
| 7 | 2015-11-25 | 1010 | fhjgfj | 0 | 300000 | -120000 |
| 8 | 2015-11-25 | 1013 | jkgjkg | 500000 | 0 | 380000 |
| 13 | 2015-11-26 | 2356 | hhjvjh | 280000 | 0 | 660000 |
+--------+------------+-----------+--------+---------+---------+---------+
--------------
drop procedure if exists test_cumlan2
--------------
--------------
CREATE PROCEDURE test_cumlan2 (
IN filtreDate Date,
IN dat Date
)
DETERMINISTIC
NO SQL
BEGIN
DECLARE _id integer unsigned;
DECLARE _date date;
DECLARE _ref varchar(255);
DECLARE _mot varchar(255);
DECLARE _rec decimal(15,2);
DECLARE _dep decimal(15,2);
DECLARE _cum decimal(15,2);
DECLARE _fin INTEGER DEFAULT 1;
DECLARE _tab CURSOR FOR
SELECT M.mvt_id,
M.mvt_date,
COALESCE( R.cr_ref, D.cD_ref ),
COALESCE( R.cr_motif, D.cD_motif ),
COALESCE( R.cr_montant, 0 ),
COALESCE( D.cd_montant, 0 )
FROM mouvement M
LEFT JOIN entree E ON M.mvt_id = E.mvt_id
LEFT JOIN carnetrecette R ON E.cr_id = R.cr_id
LEFT JOIN sortie S ON M.mvt_id = S.mvt_id
LEFT JOIN carnetdepense D ON S.cd_id = D.cd_id
WHERE mvt_date BETWEEN filtreDate AND dat
ORDER BY M.mvt_date
;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET _fin = 0;
SET _cum = 0;
OPEN _tab;
FETCH _tab INTO _id, _date, _ref, _mot, _rec, _dep;
WHILE (_fin)
DO
SET _cum = _cum + _rec - _dep;
select _id as mvt_id,
_date as date,
_ref as reference,
_mot as motif,
_rec as recette,
_dep as depense,
_cum as cumul;
FETCH _tab INTO _id, _date, _ref, _mot, _rec, _dep;
END WHILE;
CLOSE _tab;
END
--------------
--------------
call test_cumlan2 ('2015-11-20', '2015-11-26')
--------------
+--------+------------+-----------+--------+-----------+---------+-----------+
| mvt_id | date | reference | motif | recette | depense | cumul |
+--------+------------+-----------+--------+-----------+---------+-----------+
| 5 | 2015-11-20 | 2356 | hhjvjh | 280000.00 | 0.00 | 280000.00 |
+--------+------------+-----------+--------+-----------+---------+-----------+
+--------+------------+-----------+--------+---------+-----------+-----------+
| mvt_id | date | reference | motif | recette | depense | cumul |
+--------+------------+-----------+--------+---------+-----------+-----------+
| 6 | 2015-11-24 | 1523 | cfhjvj | 0.00 | 100000.00 | 180000.00 |
+--------+------------+-----------+--------+---------+-----------+-----------+
+--------+------------+-----------+--------+---------+-----------+------------+
| mvt_id | date | reference | motif | recette | depense | cumul |
+--------+------------+-----------+--------+---------+-----------+------------+
| 7 | 2015-11-25 | 1010 | fhjgfj | 0.00 | 300000.00 | -120000.00 |
+--------+------------+-----------+--------+---------+-----------+------------+
+--------+------------+-----------+--------+-----------+---------+-----------+
| mvt_id | date | reference | motif | recette | depense | cumul |
+--------+------------+-----------+--------+-----------+---------+-----------+
| 8 | 2015-11-25 | 1013 | jkgjkg | 500000.00 | 0.00 | 380000.00 |
+--------+------------+-----------+--------+-----------+---------+-----------+
+--------+------------+-----------+--------+-----------+---------+-----------+
| mvt_id | date | reference | motif | recette | depense | cumul |
+--------+------------+-----------+--------+-----------+---------+-----------+
| 13 | 2015-11-26 | 2356 | hhjvjh | 280000.00 | 0.00 | 660000.00 |
+--------+------------+-----------+--------+-----------+---------+-----------+
Appuyez sur une touche pour continuer... |
Partager