Bonsoir,
Je suis empêtré dans une requête, et à force d'avoir la tête dedans, je ne vois plus la solution, qui doit pourtant être relativement simple (je pense).
Voici les cas :
- j'ai une table (SESSIONS) avec différentes données, des sessions. Chaque session possède un id, un libellé, et d'autres données sans intérêt.
- une autre table (DATES), qui contient 3 champs : id, id de la table des sessions (clé étrangère de la table SESSIONS), et une date.
- une SESSION peut être rattachée à 0 ou plusieurs dates.
Mon besoin : récupérer TOUTES les sessions, et pour chacune la date minimale (ou null, ou autre valeur si aucune date correspondante à cette session).
Pour info, voici le code de création des 2 tables, avec un jeu d'essai :
Sur cet exemple, je voudrais obtenir la liste des sessions (3), avec pour chaque la date la plus petite associée, ou null si aucune date associée :
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 CREATE TABLE IF NOT EXISTS `DATES` ( `Date_id` bigint(20) NOT NULL auto_increment, `Date_SessionId` bigint(20) NOT NULL COMMENT 'Clé externe de la session à laquelle est rattrachée cette date', `Date_Date` date NOT NULL, PRIMARY KEY (`Date_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=69 ; -- -- Contenu de la table `DATES` -- INSERT INTO `DATES` (`Date_id`, `Date_SessionId`, `Date_Date`) VALUES (66, 67, '2011-06-23'), (68, 67, '2011-06-28'), (62, 110, '2011-10-03'), (67, 67, '2011-06-30'); -- -------------------------------------------------------- -- -- Structure de la table `SESSIONS` -- CREATE TABLE IF NOT EXISTS `SESSIONS` ( `Session_id` bigint(20) NOT NULL auto_increment, `Session_Libelle` varchar(255) NOT NULL, PRIMARY KEY (`Session_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=112 ; -- -- Contenu de la table `SESSIONS` -- INSERT INTO `SESSIONS` (`Session_id`, `Session_Libelle`) VALUES (67, 'Libellé Session 1'), (60, 'Libellé Session 2'), (111, 'Libellé Session 3');
Je tourne en rond depuis hier, je n'avance plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 67 Libellé Session 1 2011-06-23 60 Libellé Session 2 null 110 Libellé Session 3 2011-10-03
une idée ?
Merci !
Olif.
Partager