ورود

View Full Version : مشکل در union کردن چند select



Mohsen82
چهارشنبه 08 آذر 1391, 14:42 عصر
سلام.من می یک sp نوشتم که چند select داره به صورت زیر


select top 100 percent * from tbl_Photo where tbl_Photo.Res=300 order by NewId()

select top 85 percent * from tbl_Photo where tbl_Photo.Res=150 order by NewId()
select top 50 percent * from tbl_Photo where tbl_Photo.Res=72 order by NewId()


خوب بعد از هر select با دستور order by NewId() ترتیب
رکورد ها رو به هم می زنم . در شرایط فعلی sp فقط select اول رو خروجی می ده
باید آخر هر select از union All استفاده کنم که خطا می ده.نمی تونم از دستور


order by NewId() یک مرتبه در آخر استفاده کنم چون می خوام این به هم ریختگی
با توجه به Res منظم باشه .خواهش می کنم راهنمایی بفرمایید.

cherchil_hra
شنبه 11 آذر 1391, 10:18 صبح
از این کد استفاده کن:
SELECT *
FROM (
SELECT TOP 100 PERCENT 1 AS [MyID],*
FROM tbl_Photo
WHERE tbl_Photo.Res = 300

UNION ALL

SELECT TOP 85 PERCENT 2 AS [MyID] ,*
FROM tbl_Photo
WHERE tbl_Photo.Res = 150

UNION ALL

SELECT TOP 50 PERCENT 3 AS [MyID] ,*
FROM tbl_Photo
WHERE tbl_Photo.Res = 72
) MyTable
ORDER BY
[MyID], NEWID()

هر select رو در یک گروه قرار میدی ( با استفاده از فیلد MyID از شماره 1 تا 3)، بعد از این، اول براساس MyID مرتب می کنی و سپس با NEWID

موفق باشید!