Bonjour à tous,

J'aimerais comprendre pourquoi, SQL Server m'empêche de faire référence à une valeur générer précédement dans une sous-requête étant en jointure.

Je m'explique par cette requête :
Ne cherchez pas à comprendre la logique de cette requête dénouée de sens, il n'y en a tout simplement pas. Ce n'est que pour démontrer le problème auquel je fais face en ce moment. Car, la requête original est beaucoup trop volumineuse pour être écrite ici..

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DECLARE @MaTable TABLE (Code INT)

SELECT MaTable.*
FROM @MaTable AS MaTable
INNER JOIN
(
	SELECT (Code / 2) AS Valeur1
	FROM @MaTable
)
AS MaTableEnfant1
	ON MaTable.Code = MaTableEnfant1.Valeur1
	INNER JOIN
	(
		SELECT (MaTableEnfant1.Valeur1 / 4) AS Valeur2
		FROM @MaTable
	)
	AS MaTableEnfant2
		ON MaTable.Code = MaTableEnfant2.Valeur2
Où il y a un bout de code en rouge, je reçoit un erreur me disant que ce champs n'existe pas.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
The multi-part identifier "MaTableEnfant1.Code" could not be bound.
Pourtant il est bien générer par la table précédante 'MaTableEnfant1'. Alors pourquoi ne veut-il pas y faire référence ?

Merci du coup de main.