single
Joindre 2 Tables
Glissez pour afficher le menu
Vous avez attiré l'attention d'une entreprise qui possède une petite boutique en ligne. Elle dispose de 2 tables qui sont liées entre elles. La première table contient des informations sur les produits vendus dans la boutique en ligne.
Voici à quoi ressemble la table product :
La deuxième table contient les catégories de produits du site, ainsi qu'une brève description pour chaque catégorie.
Voici à quoi ressemble la table category :
Votre première tâche consiste à joindre ces deux tables afin de déterminer combien de produits se trouvent dans chaque catégorie. Vous utiliserez une instruction JOIN pour cela.
Avant d'aborder la tâche, comprenons ce qu'est une instruction JOIN et comment elle fonctionne.
JOIN en SQL est une opération qui combine les lignes de deux tables ou plus en fonction d'une colonne liée entre elles. JOIN permet d'obtenir des données provenant de plusieurs tables dans une seule requête, ce qui simplifie l'analyse et le traitement des données liées.
Pour joindre deux tables, elles doivent partager une colonne commune. Pour les tables, ce lien partagé est product.category_id et category.id.
Lors de l'écriture des colonnes de ces tables, commencer par le nom de la table, ajouter un point, puis le nom de la colonne. Cela permet de garder le code clair, surtout lorsque les tables ont des colonnes portant le même nom. Cela indique à SQL exactement de quelle table et colonne il s'agit.
Voici comment fonctionne JOIN en pratique. Imaginons que l'on souhaite récupérer le prix moyen des produits pour chaque nom de catégorie.
La requête pour cela ressemble à ceci :
1234SELECT category.name, AVG(product.price) AS average_price FROM product JOIN category ON product.category_id = category.id GROUP BY category.name
Voici une explication de l'utilisation de JOIN dans notre requête :
- Dans la partie
SELECT, sélection des colonnes souhaitées provenant des deux tables, en précisant le nom de la table pour plus de clarté ; - Dans la partie
JOIN, indication de la table à joindre (category) et des colonnes communes qui les relient (product.category_id = category.id) ; - Regroupement des données par
category.nameafin de calculer le prix moyen à l'aide de la fonctionAVG().
Si cela semble complexe, voici une syntaxe simple pour utiliser JOIN :
SELECT table1.column, table2.column
FROM table1
JOIN table2 ON table1.common_column = table2.common_column
Contrairement à la clause UNION, l'instruction JOIN permet de combiner des tables entières, et pas seulement les colonnes qu'elles ont en commun. Notez que UNION ne nécessite pas intrinsèquement de sous-requêtes — les sous-requêtes ne sont nécessaires que si vous souhaitez filtrer ou regrouper l'ensemble des résultats combinés. Dans de nombreux cas, vous pouvez utiliser UNION directement entre deux instructions SELECT sans sous-requêtes.
Glissez pour commencer à coder
Vous devez joindre les deux tables : category et product. Les colonnes communes à ces deux tables sont product.category_id et category.id.
Votre objectif est de trouver le montant total des produits dans chaque catégorie. Pour cela, vous devez calculer la somme de la colonne product.amount.
Utilisez l'alias total_amount pour cette colonne.
À la fin de votre requête, triez le résultat par la colonne total_amount dans l'ordre croissant.
Dans la réponse, vous devez avoir 2 colonnes : category.name et total.amount.
Instructions brèves
- Récupérer la colonne
category.nameet la somme de la colonneproduct.amountdepuis la tableproduct. - Attribuer l'alias
total_amountà la seconde colonne. - Joindre la table
categoryen utilisant une instructionJOIN. - Faire la correspondance entre les tables sur la colonne commune
product.category_id = category.id. - Grouper les résultats par
category.name. - Trier les résultats par
total_amount.
Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion