article(s) dans votre panier VOIR

Tuto PHP/MySQL | Jointures complexes

  • Vidéo 139 sur 158
  • 4h43 de formation
  • 158 leçons

Un contenu flash devrait s'afficher ici. Votre navigateur ne comporte pas de plugin flash, ou il ne s'est pas correctement initialisé.

Vous pouvez télécharger le plugin flash depuis le site d'Adobe à l'adresse suivante : http://get.adobe.com/flashplayer/.

Pour accéder à la suite de cette formation, vous devez vous abonner.
previous
summary
resume
next
play
Jointures complexes
00:00 / 02:51
HD
fullscreen
Je m’abonne
à partir de 16,6 € / mois
  • Visionnage en ligne
  • Accès illimité à toutes nos formations
OU
J'achète uniquement
la formation
49,90€
  • Téléchargement + VOD à vie
  • Accès uniquement à cette formation

Sommaire de la formation

Détails de la formation

Les requêtes SQL traditionnelles sont construites sur cette syntaxe :

SELECT ou plusieurs champs FROM ou plusieurs tables
WHERE ou plusieurs conditions;

Les jointures simples sont effectuées dans la clause WHERE. Par contre, les jointures complexes se font entre le FROM et le WHERE via des mots clés spécifiques : INNER JOIN, LEFT JOIN ou RIGHT JOIN.

Les requêtes SQL complexes ont donc une syntaxe différente :

SELECT ou plusieurs champs FROM ou plusieurs tables
| LEFT | RIGHT JOIN de jointure
WHERE ou plusieurs conditions

Examinons une requête INNER JOIN

La requete SELECT simple :

SELECT * FROM orders, order_details
         WHERE orders.OrderID=order_details.OrderID;

Devient :

SELECT * FROM orders INNER JOIN order_details
         ON orders.OrderID=order_details.OrderID

Seule la syntaxe change : le comportement à l'exécution est identique.

Examinons une requête LEFT JOIN

Les requêtes de type LEFT JOIN sont plus permissives que les autres requêtes. Supposons qu'il existe des enregistrements dans la première table pour lesquels le champ sur lequel s'effectue la jointure ne soit pas renseigné. Dans une jointure simple, ils seront purement et simplement ignorés. Dans une jointure de type LEFT JOIN, ils seront retenus, mais la valeur NULL apparaîtra pour ces enregistrements dans le champ utilisé pour effectuer la jointure ainsi que dans tous les champs de la deuxième table.

La requete SELECT simple :

SELECT * FROM orders, order_details
         WHERE orders.OrderID=order_details.OrderID;

Devient :

SELECT * FROM orders LEFT JOIN order_details
         ON orders.OrderID=order_details.OrderID

Pour terminer, examinons les requêtes RIGHT JOIN

Les requêtes de type RIGHT JOIN sont comparables aux requêtes LEFT JOIN. Supposons qu'il existe des enregistrements dans la deuxième table pour lesquels le champ sur lequel s'effectue la jointure ne soit pas renseigné. Dans une jointure simple, ils seront purement et simplement ignorés. Dans une jointure de type RIGHT JOIN, ils seront retenus, mais la valeur NULL apparaîtra pour ces enregistrements dans le champ utilisé pour effectuer la jointure ainsi que dans tous les champs de la première table.

La requete SELECT simple :

SELECT * FROM orders, order_details
         WHERE orders.OrderID=order_details.OrderID;

Devient :

 

SELECT * FROM orders RIGHT JOIN order_details
         ON orders.OrderID=order_details.OrderID