Maison >base de données >tutoriel mysql >Comment puis-je rejoindre la même table deux fois dans une requête MySQL ?

Comment puis-je rejoindre la même table deux fois dans une requête MySQL ?

DDD
DDDoriginal
2024-12-18 09:50:12745parcourir

How Can I Join the Same Table Twice in a MySQL Query?

Joindre deux fois sur la même table dans MySQL

L'opération de jointure de MySQL vous permet de fusionner des lignes de plusieurs tables en fonction d'une clé commune. Dans certains scénarios, il peut être nécessaire de joindre une table avec elle-même deux fois. Cette technique est couramment utilisée pour afficher plusieurs colonnes de la même table dans les résultats de la requête.

Cas d'utilisation

Considérons une base de données avec deux tables : domaines et avis. La table des domaines contient les ID de domaine (dom_id) et les noms de domaine (dom_url). La table des avis contient les ID de domaine pour les domaines « de » et « vers » impliqués dans une révision (rev_dom_from, rev_dom_to).

Pour afficher les deux noms de domaine pour chaque révision, il est nécessaire de rejoindre la table des domaines deux fois. .

Structure de requête

Pour y parvenir, utilisez un LEFT JOIN pour chaque jointure souhaitée. Dans cet exemple, alias la table des domaines comme toD et fromD pour plus de clarté.

SELECT toD.dom_url AS ToURL,
       fromD.dom_url AS FromUrl,
       rvw.*
FROM reviews AS rvw
LEFT JOIN domain AS toD
    ON toD.dom_id = rvw.rev_dom_for
LEFT JOIN domain AS fromD
    ON fromD.dom_id = rvw.rev_dom_from;

Explication

  • Sélection de la table : La requête commence par sélectionner des lignes dans le tableau des avis, en l'appelant "rvw".
  • Première à GAUCHE JOIN : Le premier LEFT JOIN connecte la table des domaines (alias toD) à la table des avis en fonction de l'ID de domaine "To" (toD.dom_id = rvw.rev_dom_for).
  • Deuxième LEFT JOIN : Le deuxième LEFT JOIN apporte une seconde fois la table des domaines (alias fromD) et le connecte à la table des avis en fonction de l'ID de domaine "From" (fromD.dom_id = rvw.rev_dom_from).
  • Clause SELECT : La clause SELECT spécifie que la requête doit renvoyer le dom_url champ de l'alias toD comme ToURL et le champ dom_url de l'alias fromD comme FromUrl. Il inclut également toutes les colonnes (rvw.*) du tableau des avis dans les résultats.

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