IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Atteindre seulement la dernière ligne d'une table liée par une relation 1 vers plusieurs


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 29
    Points : 18
    Points
    18
    Par défaut Atteindre seulement la dernière ligne d'une table liée par une relation 1 vers plusieurs
    Bonjour à tous et désolé pour ce titre aussi vague que compliqué

    Voici 2 tables pour illustrer ma question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    table1
    id , nom
    1 , bob
    2 , zorro
    3 , homme invisible
     
    table2
    id, date
    1 2009-02-11
    1 2009-01-10
    2 2001-09-21
    2 2004-11-12
    2 2006-10-10
    id de la table 2 etant un index de id table1 .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT t1.nom , t2.date
    FROM table1  t1 
    LEFT JOIN table2 t2
    ON t1.id = t2.id
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    bob 2009-02-11
    bob 2009-01-10
    zorro 2001-09-21
    zorro 2009-11-12
    zorro 2004-11-12
    homme invisible NULL
    Je souhaites récupérer pour chaque entrées de la table1 la dernière entrée de la table2 correspondante pour avoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    bob 2009-02-11
    zorro 2009-11-12
    homme invisible NULL
    Je ne sais pas comment m'y prendre... Quelqu'un à t-il un solution?

    Merci et bonne journée

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT t1.nom, MAX(t2.insertion_date)
    FROM table1 AS t1
    	LEFT JOIN table2 AS t2
    		ON t1.id = t2.id
    GROUP BY t1.nom

    Attention à la table deux, vaous avez un champ de nom 'date', il ne faut pas utiliser les mot clés de MySQL pour définir ses champs, utilisez un nom du genre 'insertion_date' .

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    Merci de ta réponse...

    Par contre je rencontre un problème si je rajoute une colonne à la table2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    table2
    id, insertion_date, parametre
    1 2009-02-11 parametre1
    1 2009-01-10 parametre2
    2 2001-09-21 parametre3
    2 2004-11-12 parametre4
    2 2006-10-10 parametre5
    Si j'execute la requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT t1.nom, MAX(t2.insertion_date), t2.parametre
    FROM table1 AS t1
    	LEFT JOIN table2 AS t2
    		ON t1.id = t2.id
    GROUP BY t1.nom
    il me renvoi systematiquement la même valeur de 'parametre' même si je change MAX(t2.insertion_date) par MIN(t2.insertion_date)

    ex avec MAX(t2.insertion_date)
    bob 2009-02-11 parametre1
    zorro 2006-10-10 parametre5


    ex avec MIN(t2.insertion_date)
    bob 2009-01-10 parametre1
    zorro 2001-09-21 parametre5



    Merci encore et très bonne journée

Discussions similaires

  1. [WD18] Selectionner une ligne d'une table remplie par une requête
    Par MAYKEI dans le forum WinDev
    Réponses: 2
    Dernier message: 26/06/2015, 19h54
  2. Réponses: 5
    Dernier message: 29/07/2010, 09h13
  3. Réponses: 3
    Dernier message: 20/12/2006, 17h59
  4. cle_primaire d'une table = cle_primaire d'une table secondaire
    Par Mihalis dans le forum Bases de données
    Réponses: 5
    Dernier message: 20/09/2006, 22h49
  5. Réponses: 6
    Dernier message: 16/06/2006, 13h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo