Use variable in outer query in sub query
-
27. května 2012 12:53
Hi could you help me with my query I still get
The multi-part identifier "t.ID" could not be bound.
SELECT * FROM [Task].[Task_Entity] te
INNER JOIN [Task].[Task] t ON te.[TaskID] = t.[ID]
LEFT JOIN
(
SELECT * FROM [Task].[TaskInfo] derivedTable
WHERE derivedTable.[TaskID] = t.[ID]
) ti ON ti.[TaskID] = t.[ID]Do you know any solution how to use t.[ID] in subquery?
Thank you for your replies.
Všechny reakce
-
28. května 2012 5:38
The problem in the above T-SQL Statement is that even though we are using the Task table alias t in the subquery, we are not syntactically allowed to use it outside the scope of the subquery.
Try to replace
LEFT JOIN
(
SELECT * FROM [Task].[TaskInfo] derivedTable
WHERE derivedTable.[TaskID] = t.[ID]
)by one of following INNER join
1. dont use derived table
INNER JOIN
[Task].[TaskInfo] ti
ti.[TaskID] = t.[ID]or
2. if it is necessary to have derived table, left your query for derived table without WHERE derivedTable.[TaskID] = t.[ID]
INNER JOIN
(
SELECT * FROM [Task].[TaskInfo] derivedTable
)
ti ON ti.[TaskID] = t.[ID]
This problem is solved in another thread too
http://social.msdn.microsoft.com/Forums/en/transactsql/thread/3b2e0875-e98c-4931-bcb4-e9f449b637d7 -
28. května 2012 6:09
If you would like English translation just let me know.
Jsme na českém fóru, proto si dovolím odpovědět česky.
Nahrazovat LEFT JOIN pomocí INNER JOIN dá zcela jistě odlišné výsledky, navrhuji ponechat LEFT JOIN, ale vyjmout zcela zbytečný subselect:
SELECT * FROM [Task].[Task_Entity] te INNER JOIN [Task].[Task] t ON te.[TaskID] = t.[ID] LEFT JOIN [Task].[TaskInfo] ti ON ti.[TaskID] = t.[ID]
- Navržen jako odpověď Petr Barták 21. června 2012 22:12
- Označen jako odpověď Straka Jiri 22. června 2012 10:56