Maison > base de données > tutoriel mysql > Comment joindre efficacement plusieurs tables dans MySQL pour récupérer des données associées ?

Comment joindre efficacement plusieurs tables dans MySQL pour récupérer des données associées ?

Barbara Streisand
Libérer: 2024-12-19 14:37:11
original
525 Les gens l'ont consulté

How to Efficiently Join Multiple Tables in MySQL to Retrieve Related Data?

Joindre plusieurs tables dans MySQL à l'aide de la jointure interne

Dans MySQL, l'instruction INNER JOIN vous permet de combiner des enregistrements de plusieurs tables en fonction d'un colonne commune. Pour effectuer une jointure multi-tables, vous pouvez utiliser la syntaxe suivante :

SELECT columns
FROM table_1
INNER JOIN table_2
ON table_1.column = table_2.column
[...]
INNER JOIN table_n
ON table_n-1.column = table_n.column;
Copier après la connexion

Considérez le scénario suivant : vous disposez de quatre tables :

  • commandes : (user_id, pricing_id)
  • products_pricing : (id, product_id)
  • produits : (id, nom)
  • listes : (id, user_id, url)

Vous souhaitez récupérer tous les produits d'un utilisateur spécifique (user_id = 7) et les hyperliens pour chaque produit en utilisant l'URL correspondante depuis le tableau des listes.

Requête originale :

SELECT *
FROM orders
INNER JOIN products_pricing
ON orders.pricing_id = products_pricing.id
INNER JOIN products
ON products_pricing.product_id = products.id
WHERE orders.user_id = '7';
Copier après la connexion

Cette requête renverra tous les produits de l'utilisateur avec l'ID 7, mais elle n'inclura pas l'URL de chaque produit. .

Requête révisée :

Pour inclure l'URL de chaque produit, vous peut ajouter un autre INNER JOIN à la table des listings :

SELECT
p.id,
p.name,
l.url,
o.user_id,
o.pricing_id
FROM orders AS o
INNER JOIN products_pricing AS pp ON o.pricing_id  = pp.id
INNER JOIN products         AS  p ON pp.product_id = p.id
INNER JOIN listings         AS  l ON l.user_id = o.user_id
WHERE o.user_id ='7' 
  AND l.id = 233 
  AND l.url = 'test.com';
Copier après la connexion

Dans cette requête, nous avons :

  • INNER JOIN listings AS l ON l.user_id = o.user_id : Ceci joint la table des listes à la table des commandes en fonction de la colonne user_id.
  • WHERE o.user_id ='7' : Cela filtre les résultats pour inclure uniquement les lignes où le user_id dans le tableau des commandes est égal à 7.
  • AND l.id = 233 AND l.url = 'test.com' : cela ajoute des filtres supplémentaires pour garantir que seules les lignes avec un ID (233) et une URL spécifiques (« test.com ») sont incluses dans le résultat.

En utilisant cette requête révisée, vous pouvez récupérer avec succès les produits pour l'utilisateur spécifié, ainsi que les URL correspondantes pour les lier.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal