Médiaforma

PHP MySQL – Exemples de jointures complexes

Print Friendly

Pour mieux comprendre les différences entre les jointures simples et les jointures complexes, rien de tel que quelques exemples.

En utilisant l’interface Web phpMyAdmin, définissez la table categories composée de deux champs :

  • id_categorie de type int(11), auto incrémenté ;
  • nom de type text.

Et la table articles, composée de trois champs :

  • id_categorie de type int(11), auto incrémenté ;
  • titre de type text ;
  • catégorie de type int(11).

Ajoutez les données suivantes dans la table categories :

Et ajoutez les données suivantes dans la table articles :

Vous allez maintenant utiliser l’onglet SQL pour appliquer des requêtes SQL sur les tables categories et articles.

Commencez par définir une jointure simple sur les champs categorie de la table articles et id_categories de la table categories :

SELECT * FROM articles, categories
WHERE articles.categorie = categories.id_categorie

Exécutez cette requête.

Voici le résultat. Vous remarquez que les articles d’id 8 et 9 ainsi que la catégorie 5 ne font pas partie des résultats. Ceci est « normal » puisqu’aucune correspondance n’existe entre les champs categorie de la table articles et id_categorie de la table categories :

Essayons la même requête, mais cette fois-ci en utilisant un INNER JOIN :

SELECT * FROM articles INNER JOIN categories
ON articles.categorie = categories.id_categorie;

Vous pouvez vérifier que le résultat est identique.

Essayons la même requête mais cette fois-ci en utilisant un LEFT JOIN :

SELECT * FROM articles LEFT JOIN categories
ON articles.categorie = categories.id_categorie;

Cette fois-ci, les enregistrements de la première table qui n’ont pas de correspondance dans la deuxième font partie des résultats :

Notre quatrième et dernier essai utilisera un RIGHT JOIN :

SELECT * FROM articles RIGHT JOIN categories
ON articles.categorie = categories.id_categorie;

Cette fois-ci, les enregistrements de la deuxième table qui n’ont aucune correspondance dans la première font partie des réponses :

Vous avez aimé cet article ? Partagez-le avec vos réseaux...
 
Comments

No comments yet.

Leave a Reply