PDA

View Full Version : مشکل View در SQL2008



MNosouhi
پنج شنبه 09 آبان 1392, 22:18 عصر
سلام
در sql2008 ابتدا یک جدول ایجاد کردم :



CREATE TABLE [dbo].[Table_1](
[a1] [int] IDENTITY(1,1) NOT NULL,
[a2] [nvarchar](10) NULL,
[a3] [smallint] NULL,
CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED
(
[a1] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

سپس اطلاعات وارد آن کردم:



SET IDENTITY_INSERT [dbo].[Table_1] ON
INSERT [dbo].[Table_1] ([a1], [a2], [a3]) VALUES (1, N'1392/01/01', 2)
INSERT [dbo].[Table_1] ([a1], [a2], [a3]) VALUES (2, N'1392/01/01', 4)
INSERT [dbo].[Table_1] ([a1], [a2], [a3]) VALUES (3, N'1392/01/02', 1)
INSERT [dbo].[Table_1] ([a1], [a2], [a3]) VALUES (4, N'1392/01/02', 3)
SET IDENTITY_INSERT [dbo].[Table_1] OFF

سپس یک ویو ایجاد کردم :



CREATE VIEW [dbo].[View_1]
AS
SELECT TOP (100) PERCENT a1, a2, a3
FROM dbo.Table_1
ORDER BY a3

همانطوری که می بینید در ایجاد ویو بر اساس a3 سورت شده است .
حال دستور زیر را استفاده می کنم :



SELECT [a1],[a2],[a3] FROM [View_1]

بعد از اجرای دستور select بالا ، بر خلاف انتظارم ، اطلاعات بر اساس a3 سورت نیست . متذکر می شوم که من این مشکل را در sql2008 دارم و در sql2000 چنین مشکلی ندارم .
لطفا اساتید راهنمایی بفرمایند .

با تشکر

N_D
جمعه 10 آبان 1392, 08:07 صبح
این مشکل خیلی وقته که وجود داره راه حلش همه خیلی ساده هست


CREATE VIEW [dbo].[View_1]
AS
SELECT TOP 1000000000 a1, a2, a3
FROM dbo.Table_1
ORDER BY a3

MNosouhi
جمعه 10 آبان 1392, 13:22 عصر
ظاهرا این یکی از محدودیت های ویو است . در خود سایت مایکروسافت هم این قضیه ذکر شده است :



The SELECT clauses in a view definition cannot include the following:

An ORDER BY clause, unless there is also a TOP clause in the select list of the SELECT statement