PDA

View Full Version : سوال: چگونگي رفع مشكل order by در view ها sql server 2008



FSarab
سه شنبه 17 آذر 1388, 10:57 صبح
CREATE VIEW dbo.vTest
AS
select top(100) percent * from tablename order by fieldname

--------------------------------------------------------------------------------------------
خروجي دستور select
select top(100) percent * from tablename order by fieldname
با خروجي view يكي نيست
select * from vTest

ASKaffash
سه شنبه 17 آذر 1388, 11:15 صبح
سلام
فلسفه Order By مربوط به View نیست و Order By هنگامی نوشته میشود که این View در یک دستور Select دیگر مشارکت داشته باشد روش Top روش وصله زدن است

AminSobati
چهارشنبه 18 آذر 1388, 12:28 عصر
CREATE VIEW dbo.vTest
AS
select top(100) percent * from tablename order by fieldname

--------------------------------------------------------------------------------------------
خروجي دستور select
select top(100) percent * from tablename order by fieldname
با خروجي view يكي نيست
select * from vTest

سلام دوست عزیزم،
همیشه سورت به عهده بیرونی ترین Query هست. اگر داخل View سورت انجام بدین و top 100 percent داشته باشین، SQL Server متوجه میشه که شما همه جدول رو نیاز دارین و سورت رو به عهده Query بیرونی قرار میده. لذا داخل View سورت انجام نمیشه. این رفتار، رفتار استاندارد زبان SQL هست. در نسخه 2000 اگر شما چنین Viewیی داشته باشین و ازش کوئری بگیرین، نتیجه سورت شده خواهد بود. ولی از نسخه 2005 که SQL Server بیشتر به سمت استاندارد SQL گام برداشت، این رفتار تغییر کرد. البته این موضوع توضیحات و توجیهات مفصلی داره که به ریاضیات جدید و نظریه مجموعه ها برمیگرده...