J'ai une question générale sur la façon dont le serveur SQL évalue la requête joins.The estComment SQL Server évalue les différentes jointures différentes?
SELECT *
FROM TableA
INNER JOIN TableB ON TableB.id = TableA.id
LEFT JOIN TABLEC ON TABLEC.id = TABLEB.id
Q1: Quels tableaux est la gauche join basée sur? Je sais que ce sera basé sur le TABLEC mais quel est l'autre? Est-ce le résultat de la première jointure interne ou du TABLEB spécifié dans la condition de jointure gauche?
Q2: "LEFT JOIN TableC SUR TABLEC.id = TABLEB.id" équivalent à "LEFT JOIN TableC SUR TABLEB.id = TABLEC.id"
Q3: La requête équivalente à celle qui suit? (avec TABLEB.id remplacé par TABLEA.id?)
SELECT *
FROM TableA
INNER JOIN TableB ON TableB.id = TableA.id
LEFT JOIN TABLEC ON TABLEC.id = TABLEA.id
Merci!
Mais votre explication semble dire le commutatif plutôt que l'associatif. – zsong
@ziang: vous avez raison. Je devrais expliquer que A JOIN (B JOIN C) est le même que (A JOIN B) JOIN C en effet, où les parenthèses indiquent l'ordre d'évaluation, pas une sous-requête. –