Maison >base de données >tutoriel mysql >Comment puis-je récupérer efficacement des données de plusieurs tables à l'aide de jointures et d'unions SQL ?

Comment puis-je récupérer efficacement des données de plusieurs tables à l'aide de jointures et d'unions SQL ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-24 01:37:12935parcourir

How Can I Efficiently Retrieve Data from Multiple Tables Using SQL Joins and Unions?

Requête SQL pour renvoyer les données de plusieurs tables

Jointures et unions

  • Jointure interne : Combine les lignes de deux tables en fonction d'une colonne commune, renvoyant uniquement les lignes correspondantes. (Voir Wikipédia pour plus d'informations)
  • Union : Combine les résultats de plusieurs requêtes, mais supprime les lignes en double.
  • Jointure externe gauche : Comprend toutes les lignes du tableau de gauche et les lignes correspondantes du tableau de droite, mais omet les lignes sans correspondance du tableau de droite table.
  • Jointure externe droite : Inclut toutes les lignes de la table de droite et les lignes correspondantes de la table de gauche, mais omet les lignes sans correspondance de la table de gauche.
  • Intersect : Renvoie uniquement les lignes identiques sur plusieurs tables. (Non pris en charge par toutes les bases de données)

Exemples

Inner Join : Récupérer les données des tables "voitures" et "modèles" :

SELECT
    c.ID,
    m.model
FROM
    cars c
INNER JOIN
    models m
ON
    c.model = m.ID

Union: Combinez les résultats de deux requêtes pour obtenez toutes les voitures de sport et 4x4 :

SELECT
    c.ID,
    m.model
FROM
    cars c
INNER JOIN
    models m
ON
    c.model = m.ID
WHERE
    m.ID = 1
UNION
SELECT
    c.ID,
    m.model
FROM
    cars c
INNER JOIN
    models m
ON
    c.model = m.ID
WHERE
    m.ID = 3

Jointure extérieure gauche : Trouvez toutes les marques et leur nombre de voitures, y compris les marques sans aucune voiture :

SELECT
    b.brand,
    COUNT(c.id) AS countOfBrand
FROM
    brands b
LEFT OUTER JOIN
    cars c
ON
    b.ID = c.brand
GROUP BY
    b.brand

Intersects : Récupère uniquement les lignes identiques à travers les "couleurs" et les "modèles" tableaux :

SELECT
    m.model,
    c.color
FROM
    models m
INNER JOIN
    colors c
ON
    m.ID = c.ID
WHERE
    m.model = 'Sports' AND c.color = 'Red'

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!

Déclaration:
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