PDA

View Full Version : ORDER BY با UNION



dkhatibi
شنبه 08 دی 1386, 10:36 صبح
این آنچه در راهنمای SQL Server هست.

ORDER BY and COMPUTE clauses to define the order of the final results or compute summary values are allowed only at the end of the UNION statement. They cannot be used within the individual queries that make up the UNION statement.


و این خطایی که مشاهده می شود.

Server: Msg 104, Level 15, State 1, Line 1
ORDER BY items must appear in the select list if the statement contains a UNION operator.

whitehat
شنبه 08 دی 1386, 12:19 عصر
آخر عبارت اول نوشته که نمی توانید استفاده کنید.(آیا مشکل شما با استفاده از Order By در Union است؟)
برای استفاده از Order By در Union پس از انجام Union از آن یک Select بگیرید و در آن از Order By استفاده کنید.

dkhatibi
شنبه 08 دی 1386, 13:00 عصر
باتشکر



دو Select که با هم UNION می شن. در انتهای دو نیز Order By گذاشته شذه است.
[برای استفاده از Order By در Union پس از انجام Union از آن یک Select بگیرید و در آن از Order By استفاده کنید.
چگونه؟

whitehat
شنبه 08 دی 1386, 13:11 عصر
Select * From
(
Select1 ...
Union
Select2 ...
)
Order By ...

SYNDROME
شنبه 08 دی 1386, 16:27 عصر
البته می توانید Union را در یک View انجام دهید و سپس آن را sort کنید.
موفق باشید

dkhatibi
شنبه 08 دی 1386, 17:16 عصر
select * from
(
select Cst.St_No From class_St cst
Union
select S.St_no from students S where S.St_no =386008
)
order By S.St_No

و خطای زیر:


Server: Msg 156, Level 15, State 1, Line 7
Incorrect syntax near the keyword 'order'.


در مورد ساختن View هم در اجرای دستورات استفاده شده در کوپری به مشکل بر می خورد. خطها به شکل پشت سر هم اجرا نمی شوند

SYNDROME
شنبه 08 دی 1386, 20:24 عصر
در مورد ساختن View هم در اجرای دستورات استفاده شده در کوپری به مشکل بر می خورد. خطها به شکل پشت سر هم اجرا نمی شوند
خوب می توانید از Union All استفاده کنید تا خطوط پشت سر هم بیایند.
موفق باشید

whitehat
یک شنبه 09 دی 1386, 11:59 صبح
کوئری را به شکل زیر بنویسید

select St_Number from
(
select Cst.St_No As St_Number From class_St cst
Union All
select S.St_no As St_Number from students S where S.St_no =386008
) As MyTable
order By St_Number

mehdia86
دوشنبه 10 دی 1386, 11:34 صبح
با سلام

select * from
(
select Cst.St_No From class_St cst
Union
select S.St_no from students S where S.St_no =386008
)
order By S.St_No


این query ایراد داره چون بعد از این که Union زدی دیگه S شناخته شده نیست که بخواهی روی S.St_No سورت کنی ابتدا یک عنوان مشترک به این فیلدها بده و سپس در سورت از اون استفاده کن

موفق باشید