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 :

Afficher les derniers enregistrements issus de deux tables


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 204
    Par défaut Afficher les derniers enregistrements issus de deux tables
    Bonjour,
    j'aimerai faire un affichage des rédacteurs avec leur derniier article d'une base dont les informations sont issues de deux tables
    table auteurs (num_aut,nom_aut,prenom_aut,desc_aut_e,type_aut,auteur_confirme)
    et
    table article (num_art,titre_art_f,titre_art_e,num_aut,date_art)


    Auteurs
    ++++++++++++++++++++++++++++
    |num_aut | nom_aut | prenom_aut|
    ++++++++++++++++++++++++++++
    + 1 + Pierre + pierrot +
    + 2 + Eric + pierrot +
    + 3 + Pierre + Jean +

    Articles

    +++++++++++++++++++++++++++++++++++++++++++++++
    |num_art |titre_art_f | titre_art_e |num_aut |date_art |
    +++++++++++++++++++++++++++++++++++++++++++++++
    + 1 + le jour 1 + + 1 + 01/01/17 +
    + 2 + la nuit 2 + le lac + 2 + 04/01/17 +
    + 3 + la lumière + la montagne + 2 + 05/01/17 +
    + 3 + la tornade + la lunelle + 1 + 06/01/17 +


    J'aimerai avoir à la sortie

    ++++++++++++++++++++++++++++++++
    + Nom prenom | titre | date |
    ++++++++++++++++++++++++++++++++
    +Pierre pierrot + la tornade + 06/01/17 +
    +Eric pierrot + la lumière + 05/01/17 +

    J'ai fait une jointure simple avec un group by j'ai eu les deux noms mais pas les bons titres.
    Je reçois uniquement les premiers ceux du 01/01/17 pour Pierre pierrot, et 04/01/17 pour Eric pierrot.
    J'ai essayé de changer l'ordre sql que voiçi mais j'ai toujours le même résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $sql_aut="
        SELECT u.num_art, u.titre_art_f, u.titre_art_e, m.num_aut, m.nom_aut, m.prenom_aut, m.desc_aut_e
        from (
    	select max(num_art) as der,num_aut
    	from articles
    	group by num_aut
    ) As Ta
    Join articles as u on u.num_aut = Ta.num_aut
    Left outer join auteurs as m on m.num_aut = u.num_aut
    where   	      
            m.type_aut='REDACTEUR' and 
            m.auteur_confirme='OUI'        
            order by u.num_aut asc ";
    Peut-être quelqu'un peut voir où je coince et j'en serrai très reconnaissant.
    En vous remerciant.

  2. #2
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Essayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT u.num_art, u.titre_art_f, u.titre_art_e, m.num_aut, m.nom_aut, m.prenom_aut, m.desc_aut_e
        from (
    	select max(num_art) as der,num_aut
    	from articles
    	group by num_aut
    ) As Ta
    Join articles as u on 
    u.num_art = Ta.der
    and u.num_aut = Ta.num_aut
    Left outer join auteurs as m on m.num_aut = u.num_aut
    where   	      
            m.type_aut='REDACTEUR' and 
            m.auteur_confirme='OUI'        
            order by u.num_aut asc ";

  3. #3
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut opeo.

    Voici deux requêtes faisant la même chose et produisant le résultat que vous attendez !
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
        DEFAULT CHARACTER SET `latin1`
        DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `auteur`
    --------------
     
    --------------
    CREATE TABLE `auteur`
    ( `num_aut`     integer unsigned  not null auto_increment primary key,
      `nom_aut`     varchar(255)      not null,
      `prenom_aut`  varchar(255)      not null
     ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `auteur` (`nom_aut`,`prenom_aut`) values
      ('Pierre', 'Pierrot'),
      ('Eric',   'Pierrot'),
      ('Pierre', 'Jean')
    --------------
     
    --------------
    select * from `auteur`
    --------------
     
    +---------+---------+------------+
    | num_aut | nom_aut | prenom_aut |
    +---------+---------+------------+
    |       1 | Pierre  | Pierrot    |
    |       2 | Eric    | Pierrot    |
    |       3 | Pierre  | Jean       |
    +---------+---------+------------+
    --------------
    DROP TABLE IF EXISTS `article`
    --------------
     
    --------------
    CREATE TABLE `article`
    ( `num_art`      integer unsigned  not null auto_increment primary key,
      `titre_art_f`  varchar(255)      not null,
      `titre_art_e`  varchar(255)      not null,
      `num_aut`      integer unsigned  not null,
      `date_art`     date              not null,
      CONSTRAINT `FK_01` FOREIGN KEY (`num_aut`) REFERENCES `auteur` (`num_aut`) ON DELETE CASCADE ON UPDATE CASCADE
     ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `article` (`titre_art_f`,`titre_art_e`,`num_aut`,`date_art`)  values
      ('le jour 1',   '',           1, '2017-01-01'),
      ('la nuit 2',  'le lac',      2, '2017-01-04'),
      ('la lumière', 'la montagne', 2, '2017-01-05'),
      ('la tornade', 'la lunelle',  1, '2017-01-06')
    --------------
     
    --------------
    select * from `article`
    --------------
     
    +---------+-------------+-------------+---------+------------+
    | num_art | titre_art_f | titre_art_e | num_aut | date_art   |
    +---------+-------------+-------------+---------+------------+
    |       1 | le jour 1   |             |       1 | 2017-01-01 |
    |       2 | la nuit 2   | le lac      |       2 | 2017-01-04 |
    |       3 | la lumière  | la montagne |       2 | 2017-01-05 |
    |       4 | la tornade  | la lunelle  |       1 | 2017-01-06 |
    +---------+-------------+-------------+---------+------------+
    --------------
        select  t1.nom_aut      as Nom,
                t1.prenom_aut   as Prenom,
                t2.titre_art_f  as Titre,
                t2.date_art     as Date
          from  `auteur` as t1
     
    inner join  `article` as t2
            on  t2.num_aut = t1.num_aut
     
         where  t2.date_art = (select max(date_art) from `article` as t3 where t3.num_aut = t1.num_aut)
      order by  t2.date_art desc
    --------------
     
    +--------+---------+------------+------------+
    | Nom    | Prenom  | Titre      | Date       |
    +--------+---------+------------+------------+
    | Pierre | Pierrot | la tornade | 2017-01-06 |
    | Eric   | Pierrot | la lumière | 2017-01-05 |
    +--------+---------+------------+------------+
    --------------
             select  t1.nom_aut      as Nom,
                     t1.prenom_aut   as Prenom,
                     t2.titre_art_f  as Titre,
                     t2.date_art     as Date
               from  `auteur` as t1
     
         inner join  `article` as t2
                 on  t2.num_aut = t1.num_aut
     
    left outer join  `article` as t3
                 on  t3.num_aut = t1.num_aut
                and  t3.date_art > t2.date_art
     
              where  t3.num_art is null
           order by  t2.date_art desc
    --------------
     
    +--------+---------+------------+------------+
    | Nom    | Prenom  | Titre      | Date       |
    +--------+---------+------------+------------+
    | Pierre | Pierrot | la tornade | 2017-01-06 |
    | Eric   | Pierrot | la lumière | 2017-01-05 |
    +--------+---------+------------+------------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
    Appuyez sur une touche pour continuer...
    @+

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 204
    Par défaut
    Merci, le problème a bien été résolu. Je vous remercie.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] Afficher le dernier enregistrement d'une table
    Par lordlifen dans le forum Symfony
    Réponses: 1
    Dernier message: 25/08/2010, 12h00
  2. Afficher le dernier enregistrement d'une table
    Par persia dans le forum Requêtes
    Réponses: 8
    Dernier message: 10/09/2008, 19h26
  3. [VBA-A]Afficher les derniers enregistrements
    Par Dyopaze dans le forum VBA Access
    Réponses: 6
    Dernier message: 06/06/2006, 08h32
  4. comment rechercher les derniers enregistrement d'une table ?
    Par hornetboy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/09/2005, 09h13
  5. [crytals report] afficher le dernier enregistrement
    Par bobwilson dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 22/02/2005, 12h14

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