Search :
   
مقالات    دانلود    وب   

امروز : دوشنبه 15 شهریور 1389  
                             
صفحه اصلی
طراحی وب سایت
Symbian Tools & SKDs
اخبار کامپیوتر
مقالات آموزشی
دانلود نرم افزار
کتابهای الکترونیکی
تماس با ما

ثبت‎‎ اطلاعات روي‎ ناخن‎...
دختر 10 ساله مهندس مایکروسافت شد...
كرم Lebreat تهديدي جديد براي PC ها است...
گوشي‌‏هاي هوشمند رقيبي جديد براي PDA ها...
ديوار آتشيني مناسب براي كامپيوتر...
نهم تیر ماه، پایان عمر ویندوز 2000!...
دومين eu ،اروپا، اوايل سال آينده در دسترس همگان قرار مي گيرد...
نگارش جديد نرم افزار فتوشاپ منتشر شد...

مديريت سيستم هاي لينوكسي با SSH
فیبر نوری...
امنیت در SQL Server
ساخت يك چارت سه بعدي در فتوشاپ
ساخت دكمه هاي Windows Media Player
بازيابی N ركورد جديد با استفاده از يك query
تبديل تصاوير پيكسلي به برداري
پرونده حمله به ساحل اوهايو

SNAP Mobile SDK v2
J2ME Connected Limited Device Configuration
JSR-000082 JavaTM APIs for Bluetooth
JSR-000113 JavaTM Speech API 2.0
JSR-000113 JavaTM Speech API 2.0(Final)
Carbide.vs 2.0.1
S60 Theme Studio for Symbian OS
Carbide.c++ Express 1.0

پیام خود را با استفاده از فرم زیر برای ما ارسال نمایید.
      : نام   
      : ایمیل
  پیام : (حداکثر 400 حرف)
تغییر زبان کیبورد

66 :بازدید امروز
694 : بازدید این هفته
1751 : بازدید این ماه
327300 :مجموع بازدیدها



Tarahi.NET - Download.Learning.News.Articles.Hardware.Software

PARSDATA Corporation - CMS - Portal - Domain Registration - Hosting - Reseller Host

پایگاه آموزشی

The www.asp.net site is a portal site for the ASP.NET development community. From here you can download ASP.NET, download Web Matrix - a free web development tool, and ask questions on the forums.

Iranian and Persian Symbian website


لینک به ما
10/11/1384 بازيابی N ركورد جديد با استفاده از يك query  

در زمان پياده سازی برنامه های وب ، ممکن است به مواردی برخورد نمائيم که می بايست به تعداد مشخصی از جديدترين رکوردهای درج شده در يك بانک اطلاعاتی دستيابی و آنان را بر روی يک صفحه وب نمايش دهيم. مثلا" يک وب سايت خبری ممکن است دارای يک جدول بانک اطلاعاتی باشد ( مثلا" NewsStoriesTable ) که برای هر خبری که تعر يف می گردد يک رکورد را در جدول مربوطه اضافه می نمايد . در صورتی که بخواهيم صرفا" ده خبر جديد موجود در بانک اطلاعاتی را بر روی صفحه اصلی سايت منتشر نمائيم ، از چه روش و يا روش هائی می توان استفاده نمود؟ احتمالا" پيشنهاد می نمائيد که از عبارت و يا دستور SELECT به صورت زير استفاده گردد :


SELECT * FROM NewsStoriesTable


روش فوق ، تمامی رکوردهای موجود در جدول NewsStoriesTable را برمی گرداند ( نه صرفا" ده رکورد جديد موجود در بانک ) . در صورتی که بخواهيم صرفا" تعداد مشخصی از رکوردها را استفاده نمائيم ، می بايست با استفاده از منطق برنامه نويسی عمليات فيلترينگ را انجام تا صرفا" N رکورد مورد نظر با عبور از فيلتر ايجاد شده شرايط موجود در برنامه را تامين نمايند.
آيا روش فوق گزينه ای منطقی است ؟ پاسخ به سوال فوق منفی است و برای بازيابی رکوردهای موجود در بانک اطلاعاتی از مکانيزم های قدرتمند و مناسبی استفاده نشده است ، چراکه در ابتدا می بايست تمامی رکوردهای موجود در بانک پس از اجرای query مورد نظر برگردانده شده و در ادامه بر روی صفحه وب منتقل و با توجه به کد نوشته شده ، تعداد مشخصی از آنان را نمايش و يا ساير عمليات دلخواه را بر روی آنان انجام داد . بديهی است به موازات افزايش تعداد رکوردهای موجود در بانک ، کارآئی روش فوق كاهش خواهد يافت .
از ديگر روش های موجود،استفاده از کليد واژه های TOP و ROWCOUNT در ارتباط با سرويس دهنده SQL است . با استفاده از کليد واژه های فوق می توان تعداد رکورد برگردانده شده توسط اجرای يک query را محدود به تعداد مشخصی نمود . بدين ترتيب ، حجم اطلاعات بازيابی شده در اثر اجرای يک query کاهش يافته و امکان مشاهده آنان با صرف زمان مناسب فراهم می گردد .
در ادامه با تمرکز برروی هر يک از کليد واژه های TOP و ROWCOUNT با نحوه استفاده از آنان بيشتر آشنا می شويم .

اعمال محدوديت در بازيابي ركوردها با استفاده از TOP
کليد واژه TOP در SQL SERVER 7.0 معرفی و هدف آن ارائه روشی به منظور اعمال محدوديت در بازيابی نتايج حاصل از اجرای يك SELECT query می باشد . با استفاده از TOP می توان N ركورد جديد موجود در بانك را و يا X درصد از ركوردهای جديد را بازيابی نمود . گرامر استفاده از TOP به صورت زير است :


SELECT TOP N select list
FROM TableName

'Example :
SELECT TOP 5 *
FROM authors


الگوی دوم


SELECT TOP X PERCENT select list
FROM TableName

'Example :

SELECT TOP 25 PERCENT au_lname, au_fname
FROM authors
WHERE zip = '92101'


در كد فوق ، N و X می بايست دارای مقادير صحيح مثبت باشند و در صورتی كه از الگوی دوم استفاده می گردد ، X می بايست دارای مقداری بين صفر تا يكصد باشد .
استفاده از TOP ، باعث دستيابی به N ركورد جديد و يا X درصد از ركوردهای جديد موجود در بانك اطلاعاتی می گردد . معمولا" چنين درخواست هائی به همراه ORDER BY استفاده می گردد . مثلا" برای برگرداندن ده ركورد و يا خبر جديد ، می بايست از ORDER BY نبز به منظور مرتب سازی آنان بر اساس تاريخ درج در بانك اطلاعاتی ( PublicationDate ) استفاده گردد . كد زير نحوه انجام ابن كار را نشان مي دهد :


SELECT TOP 10 NewsURL, ArticleTitle, ArticleAuthor FROM NewsStoriesTable
ORDER BY PublicationDate DESC


اعمال محدوديت در بازيابی ركوردها با استفاده از ROWCOUNT
قبل از SQL SERVER 7.0 ، تنها روش موجود برای اعمال محدوديت در بازيابی ركوردهائی که در اثر اجرای يك query برگردانده می شوند ، استفاده از متغير ROWCOUNT بود که در ابتدا و قبل از اجرای هر گونه query می بايست به آن يک مقدار عددی بزرگتر از صفر نسبت داده شود :


SET ROWCOUNT N


پس از مقداردهی متغير ROWCOUNT ، تمامی عبارات زيرمجموعه SQL موجود در حوزه ، صرفا" قادر به پردازش N رکورد خواهند بود . اکثر نسخه های جديد سرويس دهنده SQL همچنان امکان استفاده از ROWCOUNT را حمايت می نمايند . بخاطر داشته باشيد که مقدار نسبت داده شده به متغير ROWCOUNT صرفا" در ارتباط با دستور SELECT اعمال نخواهد شد و دستورات و يا عبارات ديگری نظير INSERT , UPDATE و DELETE را نيز شامل می شود . كد زير نحوه استفاده از ROWCOUNT به منظور بازيابی ده ركورد جديد موجود در جدول NewsStoriesTable را نشان می دهد :


SET ROWCOUNT 10
SELECT NewsURL, ArticleTitle, ArticleAuthor
FROM NewsStoriesTable
ORDER BY PublicationDate DESC


موارد استفاده از TOP و ROWCOUNT
در صورتی كه از SQL SERVER 6.5 و نسخه های قبل از آن استفاده می گردد ، مجبور به استفاده از ROWCOUNT خواهيم بود چراكه در نسخه های فوق TOP معرفی نشده و امكان استفاده از آن وجود نخواهد داشت . به منظور استفاده از TOP می بايست حداقل از نسخه SQL Server 7.0 استفاده گردد .
در صورتی كه از يك عبارت SELECT استفاده می گردد و دقيقا" مشخص است كه چه تعداد ركورد را می بايست بازيابی نمود ، پيشنهاد می گردد كه از TOP استفاده گردد . TOP به منظور كار با عبارت SELECT طراحی شده است و دارای اثرات جانبی ROWCOUNT نمی باشد ( استفاده از آن در ارتباط با عباراتی به غير از SELECT و تاثير بر روی triggers ) .
برای عبارات ساده SELECT دليل خاصی برای استفاده از ROWCOUNT وجود ندارد ولی اگر قصد فراخوانی يك Stored procedure را داريد كه يك SELECT را انجام می دهد و عبارات ديگری را نيز پردازش می نمايد ، در زمان استفاده از ROWCOUNT می بايست اين اطمينان حاصل گردد كه مقدار نسبت داده شده به ROWCOUNT صرفا" در ارتباط با query مورد نطر بكارگرفته می شود .
در اين رابطه يك حالت خاص وجود دارد كه ترجيح داده می شود از ROWCOUNT در يك SELECT query در مقابل TOP استفاده گردد : زمانی كه قصد داريد به پياده كننده صفحه وب اجازه دهيد كه تعداد نتايج برگردانده شده اجرای يك query را مشخص نمايند . مثلا" فرض كنيد دارای يك Stored procedure با نام getRecentArticles باشيم كه يك پارامتر عددی صحيح را با نام ResultCount @ از ورودی می گيرد . در چنين مواردی Stored procedure می بايست صرفا" به تعداد ResultCount @ ركورد جديد موجود در بانك را برگرداند( نه اين كه همواره ده ركورد را برگرداند ) . بدين ترتيب به پياده كندگان صفحات وب اجازه داده می شود كه مشخص نمايند كه به چه تعداد ركورد جديد موجود در بانك می توانند دستيابی داشته باشند . كد زير نحوه انجام اين كار را نشان می دهد :


CREATE PROCEDURE getRecentArticles
(
@ResultCount int
)
AS

نوشتن query مورد نظر برای برگرداندن ResultCount @ ركورد


در صورتی كه از يك query پويا در stored procedure استفاده گردد ،‌ می توان از TOP نيز استفاده نمود . روش استفاده از TOP در كد زير صحيح نمی باشد و در مقابل ، می بايست به صورت پويا يك query را ايجاد و در ادامه با استفاده از EXEC و يا sp_executesql آن را اجراء نمود.


CREATE PROCEDURE getRecentArticles
(
@ResultCount int
)
AS

SELECT TOP @ResultCount NewsURL, ArticleTitle, ArticleAuthor
FROM NewsStoriesTable
ORDER BY PublicationDate DESC


كد زير نحوه استفاده از ROWCOUNT در يك Stored Procedure و متناسب با پارامتر ورودی را نشان می دهد :


CREATE PROCEDURE getRecentArticles
(
@ResultCount int
)
AS

SET ROWCOUNT @ResultCount

SELECT NewsURL, ArticleTitle, ArticleAuthor
FROM NewsStoriesTable
ORDER BY PublicationDate DESC


در صورتی كه قصد اعمال محدوديت در بازيابی ركوردهای حاصل از اجرای دستورات INSERT ,UPDATE و يا DELETE را داشته باشيد ، می بايست از ROWCOUNT استفاده گردد ،‌ چراكه TOP صرفا" در ارتباط با عبارت SELECT بكار گرفته می شود.

جمع بندی
در اين مقاله ، با طرح اين پرسش كه نحوه بازيابی n ركورد جديد در يك بانك اطلاعاتی با استفاده از يك query به چه صورت است ، دو كليد واژه TOP و ROWCOUNT معرفی گرديدند . پس از آشنائی با گرامر هر يك از كليد واژه های فوق ،‌ آنان را با يكديگر مقايسه و در نهايت با جايگاه استفاده هر يك از آنان آشنا شديم .

منبع : www.4guysfromrolla.com - www.srco.ir






نوشته شده توسط : علی رضا اسدی
 
پايگاه اطلاع رساني  و آموزش آنلاین

© 2003 All Right Received
Designed & Developed By
Tarahi.NET
Home | About | Contact