Bonjour à tous,
je rencontre un problème de tri en apparence simple , mais auquel je ne trouve pas de solution.
J'ai une table qui regroupe des actions. Chaque action à une date et trois temps possible. Les temps peuvent être de "jour" , de "nuit" ou de "dep". Une action peu avoir un , 2 ou 3 temps défini :
Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 +----+------------+----------+----------+----------+ | id | dateaction | jour | nuit | dep | +----+------------+----------+----------+----------+ | 4 | 2015-03-29 | NULL | NULL | 14:00:00 | | 5 | 2015-03-29 | NULL | 23:00:00 | NULL | | 2 | 2015-03-29 | 08:00:00 | NULL | NULL | | 1 | 2015-03-29 | 09:00:00 | NULL | NULL | | 3 | 2015-03-29 | 19:00:00 | NULL | NULL | | 6 | 2015-03-30 | 14:00:00 | NULL | NULL | +----+------------+----------+----------+----------+
J'aimerais trier mes actions par date (pas de soucis) mais aussi par temps. Trier sur un temps ne pose pas de problème mais dans l'exemple ci dessus j'ai trié comme ceci :
Du coup les enregistrements sans temps "jour" se retrouve en tête alors que leur autre temps sont pourtant supérieur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM test ORDER BY dateaction,jour ASC
Pour essayer d'être plus clair la ligne d'id 4 devrait par exemple être entre 1 et 3.
Est il possible de trier les enregistrement afin que quelque soit le champs de temps spécifié l'ordre soit respecté (du temps le plus petit au plus grand) ?
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 CREATE TABLE IF NOT EXISTS `test` ( `id` int(10) unsigned NOT NULL, `dateaction` date NOT NULL, `jour` time DEFAULT NULL, `nuit` time DEFAULT NULL, `dep` time DEFAULT NULL ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; -- -- Contenu de la table `test` -- INSERT INTO `test` (`id`, `dateaction`, `jour`, `nuit`, `dep`) VALUES (1, '2015-03-29', '09:00:00', NULL, NULL), (2, '2015-03-29', '08:00:00', NULL, NULL), (3, '2015-03-29', '19:00:00', NULL, NULL), (4, '2015-03-29', NULL, NULL, '14:00:00'), (5, '2015-03-29', NULL, '23:00:00', NULL), (6, '2015-03-30', '14:00:00', NULL, NULL);
Partager