PDA

View Full Version : آیا امکان جابه جایی رکورد های ذخیره شده در یک جدول وجود دارد؟



بیتافرهی
یک شنبه 09 فروردین 1388, 08:44 صبح
سلام
من یک جدول دارم شامل id_employee(کلید اصلی)و Name_EMP , Rate_employee .
در این جدول مشخصات کارمندان به همراه امتیاز آنها ثبت می شود.وقتی هر کارمندی پول قسطش را زودتر پرداخت ،امتیازش بالاتر میرود و باید موقعیتش در جدول هم بالا رود.

مشکل من اینجاست که از من خواستن که هر کس امتیازش بالاتر رفت ،هنگامی که جدول را باز می کنند،رکورد آن شخص بالای رکورد بقیه باشد(در واقع جدول موقع باز شدن به صورت نزولی مرتب شده باشد)
(با توجه به این که اولین بار اسامی این افراد در جدول بدون در نظر گرفتن امتیاز آنها ثبت شده بود،چون امتیاز همه ی آنها صفر بود)
1-برای من این سوال به وجود آمد ،که آیا می شود رکورد های ذخیره شده در یک جدول را جابه جا کرد؟
2-چگونه این کار را انجام دهم؟
لطفا راهنمایی کنید؟

ASKaffash
یک شنبه 09 فروردین 1388, 10:18 صبح
سلام
پاسخ سئوال اول منفی است
شما اگر نام فیلد امتیاز شما S باشد این راه را باید انجام دهید :


Select id_employee,S From T Order By S Desc

AminSobati
یک شنبه 09 فروردین 1388, 15:28 عصر
سلام،
شما میتونین با ساختن ایندکس Clustered، به صورت فیزیکی جای رکوردها رو در جدول تغییر بدین اما چیزی که از شما خواستن کمی عجیبه. روش درست چیزی هست که در پست قبلی بهش اشاره شده.

hamid_200611
یک شنبه 09 فروردین 1388, 17:06 عصر
می تونی یه نما یا View بسازی و کوری بالا رو توش قرار بدی تا کاملا شبیه یه جدول بشه ونیازی به نوشتن این Query نباشه:
CREATE VIEW [Table Name]
AS
Select id_employee,S From T Order By S Desc

AminSobati
یک شنبه 09 فروردین 1388, 23:13 عصر
این View هیچ وقت ساخته نخواهد شد!

بیتافرهی
دوشنبه 10 فروردین 1388, 19:45 عصر
نمیشه از اشاره گر ها استفاده کرد؟تو این مورد کارایی دارن؟


این View هیچ وقت ساخته نخواهد شد!
چرا؟

AminSobati
دوشنبه 10 فروردین 1388, 20:15 عصر
- چرا به جای یک Select ساده که انتهایش Order By داره بریم سراغ یک دو جین کد نویسی برای Cursor!!
- View نمیتونه Order By داشته باشه مگر اینکه از Top استفاده کرده باشین

ali_abbasi22145
چهارشنبه 12 فروردین 1388, 21:34 عصر
سلام،
شما میتونین با ساختن ایندکس Clustered، به صورت فیزیکی جای رکوردها رو در جدول تغییر بدین اما چیزی که از شما خواستن کمی عجیبه. روش درست چیزی هست که در پست قبلی بهش اشاره شده.

من هم چيزي شبيه شما را با Clustered حل كردم

AminSobati
پنج شنبه 13 فروردین 1388, 02:50 صبح
یک نکته ظریف در استفاده از Clustered Index وجود داره:
درسته که با ساختن این ایندکس، وقتی Query کلی از جدول میگیریم، رکوردها طبق Sort خاصی نمایش داده میشه، اما چون این Query فاقد Order By هست، حتی اگر SQL Server بدون رعایت ترتیب، رکوردها رو برگردونه، هیچ اشتباهی از دید منطقی رخ نداده. وقتی Order By ندادیم، یعنی ترتیب برای ما مهم نیست! در شرایط خاصی، SQL Server ممکنه طبق ترتیب Clustered Index رکوردها رو استخراج نکنه. اما داشتن Order By ترتیب رو الزامی میکنه

بیتافرهی
شنبه 15 فروردین 1388, 22:13 عصر
یعنی اگر از Clustered Index استفاده کنم ،وقتی جدولم را باز کنم ، سطر و ستون ها جابه جا شده اند یا کارش مثل selecte و فقط خروجیش مرتب شده و به صورت نزولی است؟

AminSobati
شنبه 15 فروردین 1388, 22:58 عصر
وقتی شما جدول رو باز میکنید، این دستور در حقیقت اجرا میشه:

SELECT * FROM MyTable

اینجا SQL Server به احتمال 99 درصد از Clustered Index استفاده میکنه، ولی عرض بنده اینه که با توجه به نداشتن Order By در این Query، هر ترتیبی که نمایش داده بشه درسته!