top of page

NATURAL JOIN

La commande NATURAL JOIN en SQL est une des requêtes permettant de réaliser une jointure entre deux tables. Les jointures servent à lire simultanément des données issues de deux tables d’une base de données. L’instruction NATURAL JOIN permet de réaliser une jointure naturelle, c’est-à-dire de faire une INNER JOIN avec comme condition l’égalité entre les valeurs de deux colonnes portant le même nom dans chaque table. Pour rappel, l’instruction INNER JOIN demande en effet une condition de la forme table1.column1=table2.column2, pour effectuer la jointure. Cette condition est déterminée automatiquement dans le cas d’une NATURAL JOIN, si les deux tables ont une colonne de même nom. Ce type de jointure peut être périlleux lorsque plusieurs colonnes ont le même nom dans les deux tables jointes.


Attention : il faut garder à l’esprit que c’est la jointure interne (INNER JOIN) qui sera réalisée automatiquement si on utilise l’instruction JOIN simplement.


Voici la syntaxe courante :


SELECT column1, column2 FROM table1 NATURAL JOIN table2 ;


Exemple d’utilisation :


Imaginons une base de données ‘gest_fact’, qu’une entreprise a créée pour stocker les données relatives aux factures qu’elle a émises : la liste des produits commercialisés par l’entreprise, la liste des factures émises par l’entreprise et le détail de chaque ligne de facture. ‘Gest_fact’ est constituée de trois tables : ‘produit’, ‘facture’ et ‘ligne_facture’. On souhaite maintenant lire, pour chaque produit, les noms des clients qui en ont déjà acheté. L’information des noms des clients ayant payé chaque facture se trouve dans la table ‘facture’, mais l’information des produits vendus dans chaque facture se trouve dans la table ‘ligne_facture’. Les colonnes ‘num_facture’ portent le même nom dans les tables ‘facture’ et ‘ligne_facture’, c’est pourquoi on peut réaliser une jointure naturelle. Voici le code correspondant :


SELECT DISTINCT nom_produit, nom_client FROM facture NATURAL JOIN ligne_facture ;


_


Nos formations sur https://www.apprendresql.com/ 


Voir autres : ALTER TABLE, CREATE TABLE, DROP TABLE, AND, AS, AUTO_INCREMENT, AVG(), BETWEEN, COUNT(), CROSS JOIN, DELETE, DISTINCT, FOREIGN KEY, FULL JOIN, GROUP BY, HAVING, IN, INNER JOIN, INSERT, INTERSECT, IS NULL, LEFT JOIN, LIKE, MAX(), MERGE, MIN(), NATURAL JOIN, OR, ORDER BY, PRIMARY KEY, RIGHT JOIN, SELECT, SUM(), UNION, UPDATE, WITH ROLLUP, GRANT, REVOKE, BEGIN TRANSACTION, COMMIT, ROLLBACK, SAVEPOINT


bottom of page