PDA

View Full Version : مرتب سازی خاص



Blackk_lightt
سه شنبه 12 آذر 1387, 13:20 عصر
سلام
من لازم دارم که نتیجه Select با ترتیب خاصی باشه.نه صعودی نه نزولی
اول یه نوع خاص دوم یه نوع دیگه بقیش فرقی نمیکنه
چه کنم ؟

amin_alexi
سه شنبه 12 آذر 1387, 13:24 عصر
سلام
امید وارم سوال رو درست فهویده باشم و گرنه اگه میشه بیشتر توضیح بدی !
شاید کارت با Union درست بشه
تیکه اول رو Select کن یه جور مرتب کن و تیکه دوم رو Select کن یه جور دیگه مرتب کن و بقیه رو هم که فرقی نداره این 3 تیکه رو Union کن ...

رضا عربلو
سه شنبه 12 آذر 1387, 13:36 عصر
اگر منظورتان این است که مقدار یک فیلد (مثلاً برای field1 مقدار "علی") اول بیاید. می توانید بصورت زیر عمل بکنید:


ORDER BY CASE Filed1 WHEN "علی" THEN 0 ELSE 1 , .....

Blackk_lightt
سه شنبه 12 آذر 1387, 14:10 عصر
سلام
این Query منه


select country,count(*) from IP group by Country

توی Country یا ایران یا X یا چیزای دیگه ذخیره میشه
باید اول X بیاد بعد ایران بعد بقیش
ممنون

linux
سه شنبه 12 آذر 1387, 20:50 عصر
سلام
این Query منه


select country,count(*) from IP group by Country

توی Country یا ایران یا X یا چیزای دیگه ذخیره میشه
باید اول X بیاد بعد ایران بعد بقیش
ممنون
همین لیست را بصورت درهم وقتی جلوی شما می گذارند که مرتب کنید از کجا می فهمید که باید X اول بیاید؟

amin_alexi
سه شنبه 12 آذر 1387, 20:59 عصر
من یه اشاره ای کردم که باید با uonin انجام بدی ببین با این کارت راه می افته !!!

select country,count(*) from IP group by Country
where Country = 'X'
Union All
select country,count(*) from IP group by Country
where Country = 'iran' and Country <> 'X'
Union All
select country,count(*) from IP group by Country
where Country <> 'iran' and Country <> 'X'



فکر کنم با این کارتون راه بیفته !!

Blackk_lightt
یک شنبه 17 آذر 1387, 08:59 صبح
سلام
تا اینجاش درسته


"select country,count(*) from IP where country = 'X' group by Country union " +
"Select country,count(*) from IP where country <> 'X' and country = 'IRAN, ISLAMIC REPUBLIC OF' group by Country union "

یهنی اول X میاد بعد ایران
ولی وقتی اینو اضافه میکنم همش به هم می ریزه :


"select country,count(*) from IP where country = 'X' group by Country union " +
"Select country,count(*) from IP where country <> 'X' and country = 'IRAN, ISLAMIC REPUBLIC OF' group by Country union "+
"Select country,count(*) from IP where country <> 'X' and country <> 'IRAN, ISLAMIC REPUBLIC OF' group by Country";

یه چیز دیگه :
باید بعد از X و ایران بقیش بر اساس Count نزولی مرتب شه
ممنون از کمک دوستان

amin_alexi
یک شنبه 17 آذر 1387, 18:29 عصر
select '1' as Sort,country,count(*) from IP group by Country
where Country = 'X'
Union All
select '2' as Sort,country,count(*) from IP group by Country
where Country = 'iran' and Country <> 'X'
Union All
select '3' as Sort,Country,count(*) from IP group by Country
where Country <> 'iran' and Country <> 'X'
Order By Sort


از Union All استفاده کن و این که نوشتم ....