PDA

View Full Version : بدست آوردن رکورد قبلی و بعدی یک جدول



programmer33
دوشنبه 28 فروردین 1391, 13:22 عصر
با سلام
در اس کیو ال 2000 چطور می توان رکورد پس از رکورد جاری را بدست آورد. بدون اینکه مجبور باشیم محتویات جدول را درون جدول موقت بریزیم.
با تشکر

یوسف زالی
سه شنبه 29 فروردین 1391, 15:17 عصر
سلام.
select * from TBL where ID = CurrentID -1

reza_Nazem
چهارشنبه 30 فروردین 1391, 22:10 عصر
با سلام
در مورد این کدی که نوشتید می شه یه ذره توضیح بدین؟:متعجب:

یوسف زالی
چهارشنبه 30 فروردین 1391, 22:23 عصر
ببینید جدول شما باید دارای مشخصه ای باشه که بشه از روی اون ردیف ها رو سورت کرد که اینجا ID هست.
شما باید ردیف جاری که می خواهید رکورد قبلش رو بدست بیارید داشته باشید. مثلا در یک متغیر مثل CurrentID@ یا ...
در صورتی که این مشخصه رو ندارید و در فازی نیستید که بتونید این مشخصه رو به جدول اضافه کنید بگید تا راه دیگه ای بگم.
موفق باشید.

sabagood
دوشنبه 04 اردیبهشت 1391, 23:40 عصر
سلام
من هم همچین سوالی رو دارم ولی کلید اصلی جدول من فرض کنید نام کارمند هستش و رشته ای هست چه کار می تونم انجام بدم؟

یوسف زالی
سه شنبه 05 اردیبهشت 1391, 16:01 عصر
مهم order شما هست نه نوع کلید.
order روی چی هست؟ اگر روی چیزی نباشه و کلیدتون هم autoincrement یا identity نباشه راه ساده ای براش وجود نداره.

sabagood
چهارشنبه 06 اردیبهشت 1391, 12:39 عصر
order روی حقوق کارمندان هست .... در واقع من می خوام " تفاوت حقوق هر کارمند با اولین حقوق بالاتر از خودش حساب کنم " و ایده ای به ذهنم نمی رسه

یوسف زالی
چهارشنبه 06 اردیبهشت 1391, 14:11 عصر
شما راههای متنوعی داری.
نمونه جدولتون رو بگذارید تا براتون توضیح بدم.

hamid_kz
شنبه 09 اردیبهشت 1391, 16:32 عصر
من فرض كردم كه اسم جدول dbo.Table1 هست و اين جدول داراي فيلدي به عنوان PK هست.. لزومي هم ندارد كه PK عددي باشد و من فرض كردم String باشد:


DECLARE @ID AS VARCHAR(10)
DECLARE @PreID AS INT
SET @ID = '-----' --ID سطري كه ميخواهيم سطر قبلي اش برگردانده شود كه من اسم آن فيلد را گذاشته ام PK

SELECT @PreID = RI FROM (SELECT RI = ROW_NUMBER() OVER (ORDER BY ID), * FROM dbo.TableName)A
WHERE ID = @ID

IF @PreID > 1
SET @PreID = @PreID - 1

SELECT * FROM (SELECT RI = ROW_NUMBER() OVER (ORDER BY ID), * FROM dbo.TableName)AA
WHERE RI = @PreID


توضيح بيشتر خواستيد در خدمتم.

tiphooo
یک شنبه 10 اردیبهشت 1391, 01:45 صبح
ROW_NUMBER() مختص SQLServer2005 و به بالاست
سوال دوستمون در مورد SQLServer2000 است

hamid_kz
یک شنبه 10 اردیبهشت 1391, 11:50 صبح
ROW_NUMBER() مختص SQLServer2005 و به بالاست
سوال دوستمون در مورد SQLServer2000 است
اصلا حواسم نبود.. آخه بالاتر مدير بخش جواب داده بود كه با CTE ميتوني... با اين حساب CTE هم جوابشونو نميده..