| 12
 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
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 
 | --------------
START TRANSACTION
--------------
 
--------------
DROP DATABASE IF EXISTS `base`
--------------
 
--------------
CREATE DATABASE IF NOT EXISTS `base`
        DEFAULT CHARACTER SET `utf8`
        DEFAULT COLLATE       `utf8_general_ci`
--------------
 
--------------
DROP TABLE IF EXISTS `moncompte`
--------------
 
--------------
create table `moncompte`
(  `id`              integer unsigned not null auto_increment primary key,
   `codecompte`      varchar(255)     not null,
   `naturecompte`    varchar(255)     not null,
   `titrecompte`     varchar(255)     not null,
   `exercicecompte`  varchar(255)     not null,
   `val_compte`      varchar(255)         null,
   `montbugcours`    decimal(15,2)    not null,
   `groupecompte`    varchar(255)     not null
) ENGINE=InnoDB
  DEFAULT CHARSET=`utf8` COLLATE=`utf8_general_ci`
  ROW_FORMAT=COMPRESSED
--------------
 
--------------
insert into `moncompte` (`exercicecompte`, `naturecompte`, `codecompte`,`titrecompte`,`montbugcours`,`groupecompte`,`val_compte`) values
  ('Exercice 2020',  'Depenses',  '6000/1', 'TITRE I',  1000000.0,  '6000', NULL),
  ('Exercice 2020',  'Depenses',  '6000/2', 'TITRE I',    27470.0,  '6000', NULL),
  ('Exercice 2020',  'Depenses',  '6000/3', 'TITRE I',     7000.0,  '6000', NULL),
  ('Exercice 2020',  'Depenses',  '6000/4', 'TITRE I',    69420.0,  '6000', NULL),
  ('Exercice 2020',  'Depenses',  '6000/5', 'TITRE I',    23610.0,  '6000', NULL),
  ('Exercice 2020',  'Depenses',  '6000/6', 'TITRE I',   380500.0,  '6000', NULL),
  ('Exercice 2020',  'Depenses',  '6000/7', 'TITRE I',    10000.0,  '6000', NULL),
  ('Exercice 2020',  'Depenses',  '6000/8', 'TITRE I',    30000.0,  '6000', NULL),
  ('Exercice 2020',  'Depenses',  '6000/9', 'TITRE I',        0.0,  '6000', NULL),
  ('Exercice 2020',  'Depenses', '60010/1', 'TITRE I',        0.0, '60010', NULL),
  ('Exercice 2020',  'Depenses', '60010/2', 'TITRE I',        0.0, '60010', NULL),
  ('Exercice 2020',  'Depenses', '60020/1', 'TITRE I',       50.0, '60020', NULL),
  ('Exercice 2020',  'Depenses', '60020/2', 'TITRE I',      -20.0, '60020', NULL),
  ('Exercice 2020',  'Depenses', '60020/3', 'TITRE I',        0.0, '60020', NULL),
  ('Exercice 2020',  'Depenses', '60020/4', 'TITRE I',      -30.0, '60020', NULL)
--------------
 
--------------
select * from `moncompte`
--------------
 
+----+------------+--------------+-------------+----------------+------------+--------------+--------------+
| id | codecompte | naturecompte | titrecompte | exercicecompte | val_compte | montbugcours | groupecompte |
+----+------------+--------------+-------------+----------------+------------+--------------+--------------+
|  1 | 6000/1     | Depenses     | TITRE I     | Exercice 2020  | NULL       |   1000000.00 | 6000         |
|  2 | 6000/2     | Depenses     | TITRE I     | Exercice 2020  | NULL       |     27470.00 | 6000         |
|  3 | 6000/3     | Depenses     | TITRE I     | Exercice 2020  | NULL       |      7000.00 | 6000         |
|  4 | 6000/4     | Depenses     | TITRE I     | Exercice 2020  | NULL       |     69420.00 | 6000         |
|  5 | 6000/5     | Depenses     | TITRE I     | Exercice 2020  | NULL       |     23610.00 | 6000         |
|  6 | 6000/6     | Depenses     | TITRE I     | Exercice 2020  | NULL       |    380500.00 | 6000         |
|  7 | 6000/7     | Depenses     | TITRE I     | Exercice 2020  | NULL       |     10000.00 | 6000         |
|  8 | 6000/8     | Depenses     | TITRE I     | Exercice 2020  | NULL       |     30000.00 | 6000         |
|  9 | 6000/9     | Depenses     | TITRE I     | Exercice 2020  | NULL       |         0.00 | 6000         |
| 10 | 60010/1    | Depenses     | TITRE I     | Exercice 2020  | NULL       |         0.00 | 60010        |
| 11 | 60010/2    | Depenses     | TITRE I     | Exercice 2020  | NULL       |         0.00 | 60010        |
| 12 | 60020/1    | Depenses     | TITRE I     | Exercice 2020  | NULL       |        50.00 | 60020        |
| 13 | 60020/2    | Depenses     | TITRE I     | Exercice 2020  | NULL       |       -20.00 | 60020        |
| 14 | 60020/3    | Depenses     | TITRE I     | Exercice 2020  | NULL       |         0.00 | 60020        |
| 15 | 60020/4    | Depenses     | TITRE I     | Exercice 2020  | NULL       |       -30.00 | 60020        |
+----+------------+--------------+-------------+----------------+------------+--------------+--------------+
--------------
create table `moncompte_bis` like `moncompte`
--------------
 
--------------
insert into `moncompte_bis`
  select * from `moncompte`
--------------
 
--------------
commit
--------------
 
--------------
DROP PROCEDURE IF EXISTS `maj`
--------------
 
--------------
CREATE PROCEDURE `maj` ( IN `_Exercice` VARCHAR(255))
DETERMINISTIC
NO SQL
 
BEGIN
        DECLARE _Compte VARCHAR(255);
        DECLARE _Montant   decimal(15,2);
 
        DECLARE _fin   INTEGER      DEFAULT 1;
 
        DECLARE _tab CURSOR FOR        SELECT  distinct groupecompte
                                         FROM  `moncompte`
                                        WHERE  naturecompte   = 'Depenses'
                                          AND  titrecompte    = 'TITRE I'
                                          AND  exercicecompte = _Exercice;
 
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET _fin = 0;
 
        OPEN  _tab;
        FETCH _tab INTO _Compte;
 
        WHILE (_fin)
        DO
                SELECT SUM(montbugcours) INTO _Montant FROM `moncompte` WHERE groupecompte = _Compte group by groupecompte;
 
                IF _MONTANT <> 0 THEN
                                UPDATE `moncompte` SET val_compte = case when montbugcours <> 0.0 then 'TEST 1'
                                                                          else 'ZERO 1' end
                                                WHERE groupecompte = _Compte;
                else    UPDATE `moncompte` SET val_compte = case when montbugcours <> 0.0 then 'TEST 2'
                                                                          else 'ZERO 2' end
                                                WHERE groupecompte = _Compte;
                END IF ;
 
                FETCH _tab INTO _Compte;
        END WHILE;
 
        CLOSE _tab;
END
--------------
 
--------------
call `maj`('Exercice 2020')
--------------
 
--------------
select * from `moncompte`
--------------
 
+----+------------+--------------+-------------+----------------+------------+--------------+--------------+
| id | codecompte | naturecompte | titrecompte | exercicecompte | val_compte | montbugcours | groupecompte |
+----+------------+--------------+-------------+----------------+------------+--------------+--------------+
|  1 | 6000/1     | Depenses     | TITRE I     | Exercice 2020  | TEST 1     |   1000000.00 | 6000         |
|  2 | 6000/2     | Depenses     | TITRE I     | Exercice 2020  | TEST 1     |     27470.00 | 6000         |
|  3 | 6000/3     | Depenses     | TITRE I     | Exercice 2020  | TEST 1     |      7000.00 | 6000         |
|  4 | 6000/4     | Depenses     | TITRE I     | Exercice 2020  | TEST 1     |     69420.00 | 6000         |
|  5 | 6000/5     | Depenses     | TITRE I     | Exercice 2020  | TEST 1     |     23610.00 | 6000         |
|  6 | 6000/6     | Depenses     | TITRE I     | Exercice 2020  | TEST 1     |    380500.00 | 6000         |
|  7 | 6000/7     | Depenses     | TITRE I     | Exercice 2020  | TEST 1     |     10000.00 | 6000         |
|  8 | 6000/8     | Depenses     | TITRE I     | Exercice 2020  | TEST 1     |     30000.00 | 6000         |
|  9 | 6000/9     | Depenses     | TITRE I     | Exercice 2020  | ZERO 1     |         0.00 | 6000         |
| 10 | 60010/1    | Depenses     | TITRE I     | Exercice 2020  | ZERO 2     |         0.00 | 60010        |
| 11 | 60010/2    | Depenses     | TITRE I     | Exercice 2020  | ZERO 2     |         0.00 | 60010        |
| 12 | 60020/1    | Depenses     | TITRE I     | Exercice 2020  | TEST 2     |        50.00 | 60020        |
| 13 | 60020/2    | Depenses     | TITRE I     | Exercice 2020  | TEST 2     |       -20.00 | 60020        |
| 14 | 60020/3    | Depenses     | TITRE I     | Exercice 2020  | ZERO 2     |         0.00 | 60020        |
| 15 | 60020/4    | Depenses     | TITRE I     | Exercice 2020  | TEST 2     |       -30.00 | 60020        |
+----+------------+--------------+-------------+----------------+------------+--------------+--------------+
--------------
UPDATE     `moncompte_bis` as t1
INNER JOIN (  SELECT  SUM(montbugcours) as montant,
                      groupecompte      as compte
 
                FROM `moncompte_bis`
 
               WHERE  naturecompte   = 'Depenses'
                 AND  titrecompte    = 'TITRE I'
                 AND  exercicecompte = 'Exercice 2020'
            GROUP BY  groupecompte
           ) as t2
 
        on  t2.compte = t1.groupecompte
 
SET t1.val_compte = case when t2.montant <> 0 and t1.montbugcours <> 0.0 then 'TEST 1'
                         when t2.montant <> 0 and t1.montbugcours  = 0.0 then 'ZERO 1'
                         when t2.montant  = 0 and t1.montbugcours <> 0.0 then 'TEST 2'
                         when t2.montant  = 0 and t1.montbugcours  = 0.0 then 'ZERO 2' end
 
WHERE t1.groupecompte = t2.compte
--------------
 
--------------
select * from `moncompte_bis`
--------------
 
+----+------------+--------------+-------------+----------------+------------+--------------+--------------+
| id | codecompte | naturecompte | titrecompte | exercicecompte | val_compte | montbugcours | groupecompte |
+----+------------+--------------+-------------+----------------+------------+--------------+--------------+
|  1 | 6000/1     | Depenses     | TITRE I     | Exercice 2020  | TEST 1     |   1000000.00 | 6000         |
|  2 | 6000/2     | Depenses     | TITRE I     | Exercice 2020  | TEST 1     |     27470.00 | 6000         |
|  3 | 6000/3     | Depenses     | TITRE I     | Exercice 2020  | TEST 1     |      7000.00 | 6000         |
|  4 | 6000/4     | Depenses     | TITRE I     | Exercice 2020  | TEST 1     |     69420.00 | 6000         |
|  5 | 6000/5     | Depenses     | TITRE I     | Exercice 2020  | TEST 1     |     23610.00 | 6000         |
|  6 | 6000/6     | Depenses     | TITRE I     | Exercice 2020  | TEST 1     |    380500.00 | 6000         |
|  7 | 6000/7     | Depenses     | TITRE I     | Exercice 2020  | TEST 1     |     10000.00 | 6000         |
|  8 | 6000/8     | Depenses     | TITRE I     | Exercice 2020  | TEST 1     |     30000.00 | 6000         |
|  9 | 6000/9     | Depenses     | TITRE I     | Exercice 2020  | ZERO 1     |         0.00 | 6000         |
| 10 | 60010/1    | Depenses     | TITRE I     | Exercice 2020  | ZERO 2     |         0.00 | 60010        |
| 11 | 60010/2    | Depenses     | TITRE I     | Exercice 2020  | ZERO 2     |         0.00 | 60010        |
| 12 | 60020/1    | Depenses     | TITRE I     | Exercice 2020  | TEST 2     |        50.00 | 60020        |
| 13 | 60020/2    | Depenses     | TITRE I     | Exercice 2020  | TEST 2     |       -20.00 | 60020        |
| 14 | 60020/3    | Depenses     | TITRE I     | Exercice 2020  | ZERO 2     |         0.00 | 60020        |
| 15 | 60020/4    | Depenses     | TITRE I     | Exercice 2020  | TEST 2     |       -30.00 | 60020        |
+----+------------+--------------+-------------+----------------+------------+--------------+--------------+
--------------
COMMIT
--------------
 
Appuyez sur une touche pour continuer... | 
Partager