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
| --------------
SET AUTOCOMMIT = 0
--------------
--------------
START TRANSACTION
--------------
--------------
SET session collation_connection=latin1_general_ci
--------------
--------------
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 auto_increment NOT NULL primary key,
`nom` varchar(255) NOT NULL,
`prenom` varchar(255) NOT NULL,
`ville` varchar(255) NOT NULL,
`montant` decimal(15,2) NOT NULL,
`date` date NOT NULL
) ENGINE=InnoDB
DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
ROW_FORMAT=COMPRESSED
--------------
--------------
INSERT INTO `test` (`nom`,`prenom`,`ville`,`montant`,`date`) VALUES
('Dupond', 'Louis', 'Angers', 1200.0, '2015-03-25'),
('Martin', 'Francis', 'Bordeaux', 2300.0, '2015-05-18'),
('Martin', 'Francis', 'Lyon', 1600.0, '2015-05-18'),
('Dupond', 'Louis', 'Cholet', 800.0, '2015-03-25'),
('Martin', 'Francis', 'Annecy', 4100.0, '2015-02-18'),
('Dupond', 'Louis', 'Tours', 1700.0, '2015-03-13')
--------------
--------------
select * from test
--------------
+----+--------+---------+----------+---------+------------+
| id | nom | prenom | ville | montant | date |
+----+--------+---------+----------+---------+------------+
| 1 | Dupond | Louis | Angers | 1200.00 | 2015-03-25 |
| 2 | Martin | Francis | Bordeaux | 2300.00 | 2015-05-18 |
| 3 | Martin | Francis | Lyon | 1600.00 | 2015-05-18 |
| 4 | Dupond | Louis | Cholet | 800.00 | 2015-03-25 |
| 5 | Martin | Francis | Annecy | 4100.00 | 2015-02-18 |
| 6 | Dupond | Louis | Tours | 1700.00 | 2015-03-13 |
+----+--------+---------+----------+---------+------------+
--------------
select *
from test as t1
where date = (
select max(t2.date)
from test as t2
where t2.nom = t1.nom
)
--------------
+----+--------+---------+----------+---------+------------+
| id | nom | prenom | ville | montant | date |
+----+--------+---------+----------+---------+------------+
| 1 | Dupond | Louis | Angers | 1200.00 | 2015-03-25 |
| 2 | Martin | Francis | Bordeaux | 2300.00 | 2015-05-18 |
| 3 | Martin | Francis | Lyon | 1600.00 | 2015-05-18 |
| 4 | Dupond | Louis | Cholet | 800.00 | 2015-03-25 |
+----+--------+---------+----------+---------+------------+
--------------
select t1.*
from test as t1
left outer join test as t2
on t2.nom = t1.nom
and t2.date > t1.date
where t2.date is null
--------------
+----+--------+---------+----------+---------+------------+
| id | nom | prenom | ville | montant | date |
+----+--------+---------+----------+---------+------------+
| 1 | Dupond | Louis | Angers | 1200.00 | 2015-03-25 |
| 2 | Martin | Francis | Bordeaux | 2300.00 | 2015-05-18 |
| 3 | Martin | Francis | Lyon | 1600.00 | 2015-05-18 |
| 4 | Dupond | Louis | Cholet | 800.00 | 2015-03-25 |
+----+--------+---------+----------+---------+------------+
--------------
COMMIT
--------------
--------------
SET AUTOCOMMIT = 1
--------------
Appuyez sur une touche pour continuer... |
Partager