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.