PDA

View Full Version : ركوردهاي بعدي و قبلي



javani_saeid
چهارشنبه 12 خرداد 1389, 13:04 عصر
سلام دوستان
من ميخوام وقتي يكي از ركوردها را از ديتابيس مي آرم ركوردهاي بعدي و قبلي را هم بدست بيارم.

با تشكر.

محمد سلیم آبادی
چهارشنبه 12 خرداد 1389, 13:50 عصر
سلام،
تا زمانی که داده ها بر اساس یک مقداری مرتب نشوند نمی شود از کلماتی چون ترتیب و قبل و بعد استفاده کرد.
اگر مثلا داده ها بر اساس ستون Col1 به شکل صعودی مرتب شود این کد می تونه کمکتون کنه:



SELECT * FROM table_name
WHERE Col1 IN (@value, @value+1, @value-1)

m_amin_t
چهارشنبه 12 خرداد 1389, 14:06 عصر
سلام،
تا زمانی که داده ها بر اساس یک مقداری مرتب نشوند نمی شود از کلماتی چون ترتیب و قبل و بعد استفاده کرد.
اگر مثلا داده ها بر اساس ستون Col1 به شکل صعودی مرتب شود این کد می تونه کمکتون کنه:



SELECT * FROM table_name
WHERE Col1 IN (@value, @value+1, @value-1)


فکر کنم مقصود، به دست آوردن رکوزد بعدی (یا قبلی) براساس ترتیب اضافه شدن به جدوله. یعنی مرتب شده براساس ID. اگه اینطور باشه روش شما جواب نمیده، چون ممکنه این وسط رکوردی حذف شده باشه و بنابراین ترتیبشون مثلا اینجوری باشه : 13 - 14 - 17- 19 - 20

محمد سلیم آبادی
چهارشنبه 12 خرداد 1389, 14:09 عصر
فکر کنم مقصود، به دست آوردن رکوزد بعدی (یا قبلی) براساس ترتیب اضافه شدن به جدوله. یعنی مرتب شده براساس ID. اگه اینطور باشه روش شما جواب نمیده، چون ممکنه این وسط رکوردی حذف شده باشه و بنابراین ترتیبشون مثلا اینجوری باشه : 13 - 14 - 17- 19 - 20

اوه درسته، پس باید اینو امتحان کنند:


SELECT *
FROM table_name
WHERE ID = (SELECT MIN(ID) FROM table_name WHERE ID > @ID)
OR ID = (SELECT MAX(ID) FROM table_name WHERE ID < @ID);