PDA

View Full Version : UNION و ORDER BY(خیلی واجب)



nokhod
پنج شنبه 11 اسفند 1384, 20:05 عصر
سلام به دوستان.

من سه تا SELECT رو که ORDER BY داره با UNION یکی کردم ولی خطا میده:
Incorrect syntax near keywords 'UNION'
چه کار کنم؟ خیلی لازمش دارم.

ممنون

Inspiration
جمعه 12 اسفند 1384, 00:45 صبح
شما فقط دز SELECT آخر میتونی order by داشته باشی

nokhod
جمعه 12 اسفند 1384, 08:52 صبح
پس من چی کار کنم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟

یه جدول دارم که سؤالات یه آزمون رو نگه می داره. می خام n رکورد تصادفی از سؤالات آسون (Degree = 'Easy') m رکورد تصادفی از سؤالات متوسط و p رکورد تصادفی از سؤالات مشکل رو انتخاب کنه. کسی میتونه کمکم کنه؟(کمتر از نصف روز وقت دارم)
( برای نوشتن Stored procedure این n , m , p متغیر هستند و باید از کاربر گرفته بشن.)

ممنون.

Inspiration
جمعه 12 اسفند 1384, 11:57 صبح
حوب Order by آخر جوابتو میده , مشکلت چیه؟؟

nokhod
جمعه 12 اسفند 1384, 19:54 عصر
دو SELECT اول UNION دارن و آخریه نداره. وقتی ORDER رو آخر آخر می زنم، میگه: باید دستور ORDER توی دستوری که UNION داره باشه و وقتی اونجا می ذارم همون خطایی که تو پست 1 نوشتم میده.
خواهشن کمک کنین.

AminSobati
جمعه 12 اسفند 1384, 23:32 عصر
شاید بد نباشه که دو select اصلی رو به عنوان subquery در نظر بگیرید و select بیرونی فقط sort کنه:


use northwind
go

select * from
(select country,city from customers
union all
select shipcountry,shipcity from orders) tmp
order by city

Inspiration
شنبه 13 اسفند 1384, 14:19 عصر
دو SELECT اول UNION دارن و آخریه نداره. وقتی ORDER رو آخر آخر می زنم، میگه: باید دستور ORDER توی دستوری که UNION داره باشه و وقتی اونجا می ذارم همون خطایی که تو پست 1 نوشتم میده.
خواهشن کمک کنین.


دوست عزیز
شما فرض کن 3 تا select داری که می خوهی بینشون Union بذاری


SELECT a,b,c FROM tbl1
UNION
SELECT a,b,c FROM tbl2
UNION
SELECT a,b,c FROM tbl3
ORDER BY b,a


خوب این ORDER BY روی همه SELECT ها اثر می گذارد.

حالا اینکه 2 SELECT اول UNIONدارد و آخری ندارد , یعنی چه؟

nokhod
یک شنبه 14 اسفند 1384, 09:39 صبح
منظورم ORDER BY newid() هست. که اگه اینو بذاریم خطا میده.

AminSobati
یک شنبه 14 اسفند 1384, 13:12 عصر
SELECT * FROM
(SELECT * FROM
(select top 100 percent * from Tab1 order by newid()) tmp1
union all
SELECT * FROM
(select top 100 percent * from Tab2 order by newid()) tmp2) tmp3
order by SomeColumn