tuto

Les requêtes multi-tables avec MySQL

Vous allez ici apprendre à interroger plusieurs tables d’une base de données dans une même requête. Concrètement, nous allons voir comment réaliser une requête qui demandera à nos 2 tables (actualités et commentaires) un tableau contenant les pseudos et textes des commentaires avec le titre de l’actualité correspondante. Etape 1 : Introduction Nous allons partir de tables déjà existantes que vous pourrez recréer avec ce code: — – Structure de …

 

Vous allez ici apprendre à interroger plusieurs tables d’une base de données dans une même requête. Concrètement, nous allons voir comment réaliser une requête qui demandera à nos 2 tables (actualités et commentaires) un tableau contenant les pseudos et textes des commentaires avec le titre de l’actualité correspondante.

Etape 1 : Introduction

Nous allons partir de tables déjà existantes que vous pourrez recréer avec ce code:

Notre but va donc être de faire correspondre un commentaire à une actualité dans la table actu_commentaires, ce qui définit l’actualité est la colonne id_actu. Notre but est de faire en sorte d’afficher le titre de l’actualité et non son identifiant. Pour illustrer mon propos, nous souhaiterions par exemple afficher ceci en une seule requête : « Stéphane a écris un commentaire dans « Inner Join ou Left Join? »". Nous allons pour cela exécuter une jointure interne, qui est une des jointure la plus courante.

Etape 2 : INNER JOIN … ON

Nous allons utiliser pour « coller » nos 2 tables une requête de type INNER JOIN…ON, voici comment elle fonctionne:

En fait nous aurons après le mot clef « ON » le critère qui permet de joindre les 2 tables, ici nous voulons par exemple que l’identifiant « id_actu » corresponde à l’identifiant « id » de la table « actualités » comme pour le schéma ci-dessous:

schéma

A noter aussi que j’utilise une syntaxe « ma table » AS a qui correspond à la création d’un alias, celui-ci servant exclusivement à raccourcir notre requête dans le but d’écrire par exemple « a.titre » au lieu de « actualites.titre« . Voici ce que l’on pourrait avoir comme requête pour joindre les 2 tables:

Etape 3: Un peu plus loin avec LEFT JOIN

LEFT JOIN fonctionne de manière très similaire à INNER JOIN, à la seule différence que s’il ne trouve pas d’associations, il remplit à NULL les autres champs. Vous en aurez l’utilité si par exemple vous voulez connaître quelles actualités n’ont aucun commentaires, en veillant à ajouter une clause « WHERE c.id IS NULL« . On pourrait alors avoir ce genre de requête:

Conclusion

Cette petite introduction aux requêtes utilisant plusieurs tables est terminée, sachez aussi qu’il existe plusieurs autres types de jointures que je n’ai pas abordé dans ce tutorial.

Par ailleurs, vous pouvez aussi effectuer des requêtes sur plus de 2 tables assez facilement avec cette même méthode, il suffit d’ additionner les INNER JOIN … ON …

8 commentaires

S'abonner au RSS des commentaires
  1. Lapidouce
    Posté le 20/10/2010 à 19h13

    Moi qui ne comprenais pas l’intérêt de joindre deux tables, j’en ai maintenant saisi tout le potentiel.

    Un tutoriel certes très simple mais extrêmement que j’ai ensuite adapté à mes besoins. Beaucoup de temps gagné, beaucoup de lignes de codes en moins.

    Merci beaucoup pour ce tutoriel !

  2. François
    Posté le 03/09/2009 à 9h07

    Il s’agit comme je l’ai dit… d’une petite introduction, à la conception de requêtes sur plusieurs tables.

    Sinon pour ta demande: il faudrait faire un "count(id_sujet) as total"
    a+

  3. lannoy
    Posté le 02/09/2009 à 22h38

    Je doit dire que c’est asser pauvre, il ni a pas suffisament d’exemple comme par exemple pour compté le nombre d’entré dans un table ou l’id_sujet par exemple doit correspondre a l’id du autres table.

  4. intégrateur html
    Posté le 11/07/2009 à 22h34

    si possible le code source !!

  5. hactar
    Posté le 20/06/2009 à 13h05

    Super tuto !
    Cela fait des heures que je cherchais à resoudre ce problème !

    Merci beaucoup !

  6. François
    Posté le 05/05/2009 à 17h01

    Ouah j’ai beau être passé 100 fois dessus j’avais pas remarqué!

    smile

    Bien vu
    ———————————————-
    modéré le 08/05 à 3h43

  7. Axel
    Posté le 04/05/2009 à 23h30

    Bon tuto.

    Attention à la faute d’orthographe dans l’image de présentation de l’article smile
    Il y a écrit "muTLI-table"

  8. Domi
    Posté le 08/04/2009 à 13h04

    Peut paraitre élémentaire, mais quand c’est bien expliqué et clairement présenté,comme dans ce billet, la piqure de rappel devient bien sympathique.
    Merci

Laisser un commentaire

Votre e-mail ne sera jamais publié ni communiqué. Les champs obligatoires sont indiqués par *

*
*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>