Une troisième façon de faire une jointure en SQL
J’avoue que cette méthode je pense l’avoir vu il y a très longtemps, mais je ne l’ai jamais utilisée.
La requête SQL de création de table
Nous allons d’abord créer deux tables pour faire la jointure.
CREATE TABLE `products` ( `product_id` int NOT NULL, `product_name` varchar(255) NOT NULL, `brand_id` int NOT NULL, `category_id` int NOT NULL, `model_year` smallint NOT NULL, `list_price` decimal(10,2) NOT NULL, PRIMARY KEY (`product_id`), KEY `category_id` (`category_id`), KEY `brand_id` (`brand_id`), FULLTEXT KEY `product_name` (`product_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci CREATE TABLE `categories` ( `category_id` int NOT NULL, `category_name` varchar(255) NOT NULL, PRIMARY KEY (`category_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
Première façon de faire une jointure FROM
La jointure implicite, après le FROM on liste les tables de la jointure, cette façon de faire n’est pas moins performante mais est moins claire.
select * from products P, categories C where P.category_id = C.category_id AND P.product_id = 1
Seconde façon de faire une jointure INNER JOIN
Jointure explicite, je vous la recommande, elle permet de mieux appréhender les autres types de jointure (LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN)
C’est cette méthode qui est enseignée dans la formation SQL
SELECT * FROM products P INNER JOIN categories C ON C.category_id = P.category_id WHERE P.product_id = 1
Troisième façon de faire une jointure avec USING
Jointure à “l’ancienne”. J’ai vu il me semble cette syntaxe il y a 30 ans avec Microsoft Access…
SELECT * FROM products p JOIN categories c USING(category_id) WHERE product_id = 1
On utilise quand même le mot clé JOIN sauf que la clause ON n’est pas présente.