PDA

View Full Version : سوال: صفحه بندی برای یک جدول خاص؟



goodlife
شنبه 01 خرداد 1389, 10:02 صبح
سلام
من برای صفحه بندی رکوردها، از فیلد ID استفاده کردم، اما از اونجایی که جدول من یه کمی متفاوته، استفاده از این تکنیک جواب نمیده، ملاحضه کنید:
ID ................شغل ........................در آمد........................نوع
1..................مبل سازی..................1000000 ..................مشاغل آزاد
2..................مخابرات .....................800000.....................ک ارمندی/کارگری
3..................بیمه....................... ...500000 ..................کارمندی/کارگری
4..................تعمیرکار ماشین...........800000.....................م شاغل آزاد
خب حالا من توی فرم برنامه، دو دکمه کارمندی/کارگری و مشاغل آزاد دارم که با کلیک روی آنها اطلاعات درون DataGridView بارگذاری میشه. من قصد دارم هنگام بارگذاری صفحه بندی هم انجام بشه. با جدولی که در بالا توضیح دادم، مثلا میخوام صفحه اول مشاغل کارمندی/کارگری که شامل 2 رکورده نمایش داده بشه، در حالی که فقط یک رکورد با ID=2 رو نمایش میده، خب حقم داره:لبخند:
البته در مورد مساله بالا، میشه مشاغل کارمندی/کارگری رو به یک جدول موقت دیگه Insert کرد و بعد با استفاده از این جدول صفحه بندی رو انجام داد!!! اما
آیا تکنیک دیگه ای هم وجود داره برای صفحه بندی ؟؟؟؟

goodlife
شنبه 01 خرداد 1389, 11:05 صبح
:متفکر:
پس کار دیگه ای نمیشه کرد؟؟؟؟؟

amir_alaki
شنبه 01 خرداد 1389, 13:04 عصر
با سلام

دوست من بهتره که صفحه بندی کردن رو با متد های برنامه نویسی مثل #C انجام بدین داخل برنامه .
این سرعت برنامه شمارو زیاد تر می کنه

موفق باشید

محمد سلیم آبادی
شنبه 01 خرداد 1389, 17:21 عصر
سلام
من برای صفحه بندی رکوردها، از فیلد ID استفاده کردم، اما از اونجایی که جدول من یه کمی متفاوته، استفاده از این تکنیک جواب نمیده، ملاحضه کنید:
ID ................شغل ........................در آمد........................نوع
1..................مبل سازی..................1000000 ..................مشاغل آزاد
2..................مخابرات .....................800000.....................ک ارمندی/کارگری
3..................بیمه....................... ...500000 ..................کارمندی/کارگری
4..................تعمیرکار ماشین...........800000.....................م شاغل آزاد
خب حالا من توی فرم برنامه، دو دکمه کارمندی/کارگری و مشاغل آزاد دارم که با کلیک روی آنها اطلاعات درون DataGridView بارگذاری میشه. من قصد دارم هنگام بارگذاری صفحه بندی هم انجام بشه. با جدولی که در بالا توضیح دادم، مثلا میخوام صفحه اول مشاغل کارمندی/کارگری که شامل 2 رکورده نمایش داده بشه، در حالی که فقط یک رکورد با ID=2 رو نمایش میده، خب حقم داره:لبخند:
البته در مورد مساله بالا، میشه مشاغل کارمندی/کارگری رو به یک جدول موقت دیگه Insert کرد و بعد با استفاده از این جدول صفحه بندی رو انجام داد!!! اما
آیا تکنیک دیگه ای هم وجود داره برای صفحه بندی ؟؟؟؟

از چه نسخه ای از SQL Server استفاده می کنید؟

goodlife
یک شنبه 02 خرداد 1389, 01:56 صبح
دوست عزیز در جواب شما که فرموید از متدهای C# استفاده کنم، باید بگم که من نمی خوام کل رکوردها از بانک واکشی یا fetch بشه چون این سرباز زیادی ایجاد می کنه.
من از SQL 2005 استفاده می کنم.

محمد سلیم آبادی
یک شنبه 02 خرداد 1389, 05:25 صبح
کافیه از توابع Ranking به این شکل استفاده کنید. بطور مثال کوئری زیر برای هر سطر از نوع مشاغل آزاد یک record ID می دهد که می تواند ازش به عنوان Paging استفاده کنید.


SELECT * , ROW_NUMBER() OVER (PARTITION BY Type ORDER BY Salary) AS Rank
FROM table_name
WHERE typle = 'Azad';

یا

SELECT *, ROW_NUMBER() OVER (ORDER BY Salary) AS Rec_ID
FROM table_name
WHERE Type = 'Azad')

بعد می توانید در شرط، سطرهای در Range مورد نظر را انتخاب کنید یعنی:

SELECT *
FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY Salary) AS Rank
FROM table
WHERE Type = 'Azad')AS D
WHERE Rank BETWEEN 11 AND 20;