Bonjour,
Voila je rencontre un petit problème avec mon code. Je n'ai jamais été amené à developper en tant qu'autodidacte une jointure un peu complexe.
Je développe un petit outil pour mon boulot, qui gère un système de tâche. J'ai 3 tâbles :
-1ère tâble : Task (elle enregistre les tâches)
-2ème tâble : UpdateTask (elle enregistre les mises à jour associés aux tâches)
-3ème tâble : Users (gestion de mes utilisateurs)
Dans "updatetask" j'ai un champ qui enregistre la date de chaque entrée (date_update) associé à la tâche en question. Pour lister toute mes tâches, j'ai fait un tableau avec ce select :
$req = "SELECT task.*, users.pseudo, updatetask.date_update FROM task LEFT JOIN users ON task.idUser=users.id LEFT JOIN updatetask ON task.idTask=updatetask.id_task"; // requête SQL
Mon select fonctionne et me ressort bien ce que je veux dans mon tableau mise à part qu'il me duplique les tâches qui ont plus de 1 mise à jour. Je veux juste ressortir dans ma colonne "update" la dernière date de la dernière mise à jour.
Alors je lis les réponses. Mais quand je rajoute "as date_update" il me ressort qu'une seule tâche dans ma liste avec la date la plus récente qui se trouve dans ma table "updatetask" et qui n'est pas du tout associés à la bonne tâche en question.
Par contre, tu n'est pas obligé de m'aider donc merci à toi d'être plus aimable et compréhensible dans t'es réponses.
$req = "SELECT task.*, users.pseudo, MAX(updatetask.date_update) FROM task LEFT JOIN users ON task.idUser=users.id LEFT JOIN updatetask ON task.idTask=updatetask.id_task"; // requête SQL
devrait faire l'affaire.
PS : Tu aurais dû mettre le topic dans MySQL ^^
PS : Tu aurais dû mettre le topic dans MySQL ^^ : Ha oui c'est pas faux ^^"
Alors j'ai déjà essayer la fonction MAX et j'ai une erreur : "Undefined property: stdClass::$date_update"
Hm d'après mes recherches la fonction max ne fonctionnerai que sur du "TIMESTAMP" alors que ma base updatetask est en "DATETIME", ça te parle ?
D'après l'erreur que tu obtiens (vu qu'on n'a pas le reste du code, on va deviner), il te faut juste ajouter ceci :
MAX(updatetask.date_update) as date_update
Et, je ne sais pas où tu as lu que MAX() ne marchait pas avec DATETIME, mais c'est faux.
Alors après je fait :
$sql = $bdd->query($req);
$res = $sql->fetchAll(PDO::FETCH_OBJ);
<?php foreach($res as $item){
echo($item->date_update);
?>
Bonjour, petit up
Je n'arrive toujours pas à ressortir la dernière "date" sur chaque tâche.
Dès que j'ajoute une mise à jour sur une tâche, il me duplique la ligne dans la liste des tâches...
Voilà mon code actuellement :
$req = "SELECT t.idTask, t.auteurTask, t.dateTask, t.titreTask, t.groupeTask, t.numTicket, t.priorite, t.idUser, users.pseudo, u.date_update
FROM task t LEFT JOIN users ON t.idUser = users.id INNER JOIN updatetask u ON t.idTask = u.id_task";
Si je met "MAX(updatetask.date_update)" j'ai une erreur : "Undefined property: stdClass::$date_update"