Z hlediska výkonu jsou stejné (a vytvářejí stejné plány)
Logicky byste měli provést operaci, která má stále smysl, pokud nahradíte INNER JOIN
s LEFT JOIN
.
Ve vašem případě to bude vypadat takto:
SELECT *
FROM TableA a
LEFT JOIN
TableXRef x
ON x.TableAID = a.ID
AND a.ID = 1
LEFT JOIN
TableB b
ON x.TableBID = b.ID
nebo toto:
SELECT *
FROM TableA a
LEFT JOIN
TableXRef x
ON x.TableAID = a.ID
LEFT JOIN
TableB b
ON b.id = x.TableBID
WHERE a.id = 1
Předchozí dotaz nevrátí žádné skutečné shody pro a.id
jiné než 1
, takže druhá syntaxe (s WHERE
) je logicky konzistentnější.