ورود

View Full Version : مرتب نشان دادن نتایج یک storeprocedure



عشق زندگی
یک شنبه 11 فروردین 1387, 14:04 عصر
سلام
من یک storeprocedure نوشتم که یک سری اطلاعات رو برمیگردونه
البته تو این استور پروسجر چندین select با هم uion شدن
حالا میخوام نتایجو طوری که من میخوام نشون بده باید چه کارکنم ؟

Amir_Safideh
یک شنبه 11 فروردین 1387, 18:12 عصر
حالا میخوام نتایجو طوری که من میخوام نشون بده باید چه کارکنم ؟
اول باید بفرمائید که نتایج رو چطوری میخواهید نمایش بدید ؟ توقع ندارید که ما حدث بزنیم که از این پروسیجر چی میخواهید .
----------
موفق باشید .

عشق زندگی
یک شنبه 11 فروردین 1387, 18:32 عصر
سلام
متأسفم که کامل نبود سوالم
این استور پروسجور خروجیش به این شکله
مثلاً

تهران -اردبیل
تهران -شیراز
شیراز -اصفهان
اردبیل - اصفهان
ولی من میخوام بهم نشون بده ::
تهران -اردبیل
اردبیل اصفهان
تهران -شیراز
شیراز - اصفهان
اگه بازم کامل نیست بهم بگید ممنون میشم کمکم کنید

Amir_Safideh
یک شنبه 11 فروردین 1387, 23:43 عصر
چیزی که من متوجه شدم اینه که مشکل شما در Sort کردن اطلاعاته . خوب باز هم قابل فهم نیست که به چه ترتیبی باید اطلاعات Sort بشن . برای Sort کردن اطلاعات باید یه Sort منطقی وجود داشته باشه تا بشه اینکار رو انجام داد . شما لطف کنید توضیح بدید که به چه ترتیبی باید این چیدمان انجام بشه . با اون چیزی که در بالا توضیح دادی دقیقا نمیشه متوجه شیوه چیدمان شد .

عشق زندگی
دوشنبه 12 فروردین 1387, 17:06 عصر
من نمیدونم چه جوری باید عکس رو اینجا گذاشت وگرنه با عکس توضیح میدادم
بهر حال امیدوارم متوجه منظورم بشید
ببیند آقای امین عزیز و دوستان دیگر البته
من یه استور پروسجور نوشتم که خروجیش همون طور که گفتم مثلاً
1) تهران -شیراز
2) تهران- یزد
3) یزد-اصفهان
4) شیراز - اصفهان

است ببیند کاربر من میخواد مثلاً ازتهران بره به اصفهان بنابراین میتونه از تهران بره به شیراز و بعد از شیراز بره به اصفهان
وقتی اون تو دو تا textbox وارد میکنه تهران و اصفهان بنابراین این استور پروسجور نتایجی مثل بالارو بهش نشون میده که باید دوتا رو انتخاب کنه
الان من وقتی این استور پروسجور رو به یه دیتا گرد بایند میکنم مثل بالا بهش نشون میده
ولی من میخوام مرتب شده نشون بده و مثلاً بگه
1) تهران - شیراز
2) شیراز - اصفهان
3) تهران -یزد
4) یزد- اصفهان
ایمدوارم متوجه شده باشید
من خییل به کمکتون نیاز فوری دارم لطفاً بهم جواب بدید
یه سوال دیگه هم دارم اونم اینهکه من چه جور یمیتونم گردوویی طراحی کنم که یه ستونش به ازای هر دو سطر از بقیه ستون ها یه سطر داشته باشه ؟

عشق زندگی
دوشنبه 12 فروردین 1387, 17:15 عصر
http://barnamenevis.org/forum/attachment.php?attachmentid=15780&stc=1&d=1206969140

عشق زندگی
دوشنبه 12 فروردین 1387, 17:16 عصر
این عکس خروجی استور پروسجور هست امیدارم کمک کنه

AminSobati
دوشنبه 12 فروردین 1387, 18:44 عصر
دوست عزیزم شما باید یک فیلد مجازی داشته باشید که ترتیب رو بهش معنی بده:


select 'tehran' as c1,'ardebil' as c2 ,1 as c3
union all
select 'tehran' ,'shiraz' ,3
union all
select 'shiraz' ,'esfehan' ,4
union all
select 'ardebil' ,'esfehan' ,2
order by c3


همچنین این لینک رو ببینید:
http://msdn2.microsoft.com/en-us/library/aa172769(SQL.80).aspx

عشق زندگی
دوشنبه 12 فروردین 1387, 19:00 عصر
ببخشید من منظورتونو متوجه نشدم
من که نیمدونم نتایج خروجی استورپروسجور چیه (بستگی به این داره که کاربر هنگام اجرا شهر مبداً و مقصد رو چی انتخاب کنه ) که بخوام select کنم
میشه بیشتر توضیح بدین؟

Amir_Safideh
دوشنبه 12 فروردین 1387, 20:25 عصر
اگر براتون مقدوره کدی که توی پروسیجر نوشتی رو بزار اینجا تا ببینیم بلکه یه راه حلی پیدا شه .

عشق زندگی
دوشنبه 12 فروردین 1387, 20:36 عصر
(selectdistinct Flight.flightcode as Flight#,t1.nameas DepartureCity,Flight.ArrivalDate as DepartureDate,city.nameas ArrivalCity,Flight.DepartureDate as ArrivalDate,
path.price,flight.TravelTime,Flight.FlightMiles,se atclasstype.nameas cabin
from city , city as t1,path, Flight,SeatClassType,Seat,Flight as flight2 ,flightseat,planeSeat
where(path.dervcitycode in((SELECTdistinctpath.destcitycode

from Flight,Pathinnerjoinpathas path1 onpath.destcitycode=path1.dervcitycode,city,city as t1

where
flight.pathCode=path.code andpath.dervcitycode=city.code and city.name='tehran'and
t1.name='yazd'and path1.destcitycode=t1.code )union
(SELECTdistinct path1.dervcitycode
from Flight,Pathinnerjoinpathas path1 onpath.destcitycode=path1.dervcitycode,city,city as t1


where
flight.pathCode=path1.code andpath.dervcitycode=city.code and city.name='tehran'and
t1.name='yazd'and path1.destcitycode=t1.code )))

and(path.destcitycode in((SELECTdistinctpath.dervcitycode

from Flight,Pathinnerjoinpathas path1 onpath.destcitycode=path1.dervcitycode,city,city as t1

where
flight.pathCode=path.code andpath.dervcitycode=city.code and city.name='tehran'and
t1.name='yazd'and path1.destcitycode=t1.code )union
(SELECTdistinct path1.destcitycode
from Flight,Pathinnerjoinpathas path1 onpath.destcitycode=path1.dervcitycode,city,city as t1


where
flight.pathCode=path1.code andpath.dervcitycode=city.code and city.name='tehran'and
t1.name='yazd'and path1.destcitycode=t1.code )))
andpath.dervcitycode = city.code andpath.destcitycode=t1.code and Flight.pathcode=path.code and Flight.Flightcode=FlightSeat.Flightcode and
pLaneSeat.Code=FlightSeat.planeSeatCode and planeSeat.seatcode=seat.seatcode and Seat.ClassCode=SeatClassType.Code )

union
(selectdistinct Flight.flightcode as Flight#,t1.nameas DepartureCity,Flight.ArrivalDate as DepartureDate,city.nameas ArrivalCity ,Flight.DepartureDate ArrivalDate,
path.price,flight.TravelTime,Flight.FlightMiles,se atclasstype.nameas cabin
from city , city as t1,path, flight,SeatClassType,Seat,Flight as flight2 ,flightseat,planeSeat
where(path.dervcitycode in((SELECTdistinctpath.dervcitycode

fromPathinnerjoinpathas path1 onpath.destcitycode=path1.dervcitycode,city,city as t1

where
path.dervcitycode=city.code and city.name='tehran'and
t1.name='yazd'and path1.destcitycode=t1.code )union
(SELECTdistinct path1.destcitycode
fromPathinnerjoinpathas path1 onpath.destcitycode=path1.dervcitycode,city,city as t1


where
path.dervcitycode=city.code and city.name='tehran'and
t1.name='yazd'and path1.destcitycode=t1.code )))

and(path.destcitycode in((SELECTdistinctpath.destcitycode

fromPathinnerjoinpathas path1 onpath.destcitycode=path1.dervcitycode,city,city as t1

where
path.dervcitycode=city.code and city.name='tehran'and
t1.name='yazd'and path1.destcitycode=t1.code )union
(SELECTdistinct path1.dervcitycode
fromPathinnerjoinpathas path1 onpath.destcitycode=path1.dervcitycode,city,city as t1


where
path.dervcitycode=city.code and city.name='tehran'and
t1.name='yazd'and path1.destcitycode=t1.code )))
andpath.dervcitycode = city.code andpath.destcitycode=t1.code and Flight.pathcode=path.code and Flight.Flightcode=FlightSeat.Flightcode and
pLaneSeat.Code=FlightSeat.planeSeatCode and planeSeat.seatcode=seat.seatcode and Seat.ClassCode=SeatClassType.Code )

عشق زندگی
دوشنبه 12 فروردین 1387, 20:37 عصر
امیدوارم متوجه بشید چی نوشتم !!

Amir_Safideh
سه شنبه 13 فروردین 1387, 13:12 عصر
یه راه حل به ذهنم رسید در مورد مشکل شما . و اون اینه که در ابتدا ما اطلاعات خروجی پروسیجر شما در یک جدول Temp به صورت موقت ذخیره کنیم و در بعد به کمک یه پروسیجر دوم یه فیلد مجازی ایجاد کنیم و Sort رو بر اساس این فیلد مجازی انجام بدیم . البته من درست متوجه کدهائی که برای پروسیجر نوشتید نشدم شاید اصلا نیازی هم به ذخیره در یک جدول Temp نباشه . به هر حال من راه حل رو پیدا کردم . ولی برای اینکه بشه روی دیتابیس شما اینکار رو انجام داد نیاز به اطلاعات دقیقتر هست .
من کاری رو که انجام دادم براتون میگم تا از اون استفاده کنید .
یک جدول بسازید با دو فیلد Mab و Magh و نوع هر دو رو هم رشته در نظر بگیرید نام جدول رو هم در زمان ذخیره Table1 قرار بدید . حالا در فیلد Mab اطلاعات مربوط به مبدا رو وارد کنید (البته فقط برای یه تست ساده) و در فیلد Magh هم اطلاعات مربوط به مقصد و سعی کنید که اطلاعات رو به صورت به هم ریخته و بدون هیچ چیدمان خاصی وارد کنید تا نتیجه کوئری رو بهتر درک کنید . حالا کوئری زیر رو یک بار اجرا کنید تا ببینید که Sort مورد نظر شما انجام میشه یا نه

Declare @Mab Char(10) Set @Mab = 'Tehran'
Declare @Magh Char(10) Set @Magh = 'Sfehan'
Select TOut.Mab,TOut.Magh,(RTrim(@Mab)+RTrim(TOut.Magh))S pare_Field
From Table1 TOut
Where TOut.Mab = @Mab And TOut.Magh In (Select TIn.Mab From Table1 TIn Where TIn.Magh = @Magh)
Union
Select TInner.Mab,TInner.Magh,(RTrim(@Mab)+RTrim(TInner.M ab)+'A')Spare_Field
From Table1 TInner
Where TInner.Magh = @Magh
Order By Spare_Field

--------------
موفق باشید.

عشق زندگی
سه شنبه 13 فروردین 1387, 14:57 عصر
سلام آقا امیر
ممنونم ازتون . باشه من این کارو انجام میدم و نتیجه رو بهتون میگم
بازم ممنونم

Alyas_Tet
سه شنبه 13 فروردین 1387, 15:38 عصر
بابا Amir_Safideh (http://barnamenevis.org/forum/member.php?u=50856) تو دیگه کی هستی
من این تاپیک رو از اول تا الان دنبال کردم با خودم میگفتم عمرا اگر بشه یه همچین کاری کرد حالا میبینم چه ایده خوبی دادی برای اینکار . قصدم هم این بود که هر کی این سوال رو جواب داد دو بار ازش تشکر کنم . ای ول .