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
| --------------
SET AUTOCOMMIT = 0
--------------
--------------
START TRANSACTION
--------------
--------------
DROP DATABASE IF EXISTS `base`
--------------
--------------
CREATE DATABASE `base`
DEFAULT CHARACTER SET `latin1`
DEFAULT COLLATE `latin1_general_ci`
--------------
--------------
DROP TABLE IF EXISTS `test`
--------------
--------------
CREATE TABLE `test`
( `id` integer unsigned NOT NULL auto_increment PRIMARY KEY,
`jour` tinyint unsigned NOT NULL,
`mois` tinyint unsigned NOT NULL,
`annee` smallint unsigned NOT NULL,
`phase` tinyint unsigned NOT NULL,
`check` boolean NOT NULL
) ENGINE=InnoDB
DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
ROW_FORMAT=COMPRESSED
--------------
--------------
insert into `test` (`jour`,`mois`,`annee`,`phase`,`check`) values
(21, 11, 2016, 3, true),
(04, 03, 2017, 4, false),
(05, 05, 2017, 4, true),
(11, 09, 2018, 5, false),
(12, 09, 2018, 5, false),
(13, 09, 2018, 5, true),
(14, 09, 2018, 5, false),
(15, 09, 2018, 5, false),
(03, 10, 2018, 5, true)
--------------
--------------
select * from `test`
--------------
+----+------+------+-------+-------+-------+
| id | jour | mois | annee | phase | check |
+----+------+------+-------+-------+-------+
| 1 | 21 | 11 | 2016 | 3 | 1 |
| 2 | 4 | 3 | 2017 | 4 | 0 |
| 3 | 5 | 5 | 2017 | 4 | 1 |
| 4 | 11 | 9 | 2018 | 5 | 0 |
| 5 | 12 | 9 | 2018 | 5 | 0 |
| 6 | 13 | 9 | 2018 | 5 | 1 |
| 7 | 14 | 9 | 2018 | 5 | 0 |
| 8 | 15 | 9 | 2018 | 5 | 0 |
| 9 | 3 | 10 | 2018 | 5 | 1 |
+----+------+------+-------+-------+-------+
--------------
select t1.`annee`,
t1.`mois`,
t1.`id`,
t1.`phase`,
t1.`check`
from `test` as t1
where `check` is true
or t1.`id` = ( select min(t2.`id`)
from `test` as t2
where t2.`annee` = t1.`annee`
and t2.`phase` = t1.`phase`
)
order by `annee` desc, `mois` desc, `id` desc
--------------
+-------+------+----+-------+-------+
| annee | mois | id | phase | check |
+-------+------+----+-------+-------+
| 2018 | 10 | 9 | 5 | 1 |
| 2018 | 9 | 6 | 5 | 1 |
| 2018 | 9 | 4 | 5 | 0 |
| 2017 | 5 | 3 | 4 | 1 |
| 2017 | 3 | 2 | 4 | 0 |
| 2016 | 11 | 1 | 3 | 1 |
+-------+------+----+-------+-------+
--------------
COMMIT
--------------
--------------
SET AUTOCOMMIT = 1
--------------
Appuyez sur une touche pour continuer... |
Partager