Bonjour à tous,

je n'arrive pas à faire la bonne requête. J'ai une table `stage` avec un champs date et une table `fairestage` qui fais la liaison entre le stagiaire et ses stages.

J'aimerais récupérer le stage le plus récent d'un stagiaire X
J'ai une vieille version de mysql hélas, je ne peux pas faire directement des sous-requête

Voilà ce que j'ai fais pour l'instant sur l'id :
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
$sql = "SELECT MAX(idStage) FROM `fairestage`WHERE idStagiaire = '".$_SESSION['user']."'";
                    list($maxIdStage) = mysql_fetch_array(mysql_query($sql));
 
                    $sql = "SELECT
                                  `stage`.idStage,
                                  date_format(dateStage, '%d/%m/%Y') AS dateStage,
                                  `lieu`.cp,
                                  `lieu`.ville,
                                  `stage`.prix,
                                  `typestage`.libelle
                            FROM
                                  `stage`,`fairestage`,`typestage`,`lieu`
                            WHERE
                                  idStagiaire = '".$_SESSION['user']."'
                              AND stage.idStage = fairestage.idStage
                              AND `fairestage`.idType = `typestage`.idType
                              AND `stage`.idLieu = `lieu`.idLieu
                              AND `stage`.idStage = '".$maxIdStage."'";
En gros, comment récupérer l'idStage correspond à MAX(dateStage)

j'ai trouvé une solution, je contourne le problème ^^

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
SELECT
     `stage`.idStage
 FROM
     `stage`, `fairestage` 
WHERE
     `fairestage`.idStage = `stage`.idStage
      AND `fairestage`.idStagiaire = '".$_SESSION['user']."'
ORDER BY
     dateStage DESC 
LIMIT 0, 1


Peut-on utiliser un max() dans un where ? genre maColonne = MAX(....)