نمایش نتایج 1 تا 6 از 6

نام تاپیک: سلکت تاپ پیشرفته

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    در امتداد شعاع زرین انوار شمس الشموس
    پست
    97

    سلکت تاپ پیشرفته

    سلام
    ما توی اس کیو ال دستوری داریم به اسم Select TOP که n تا رکورد اول رو برمیگردونه.
    حالا سوالی که پیش میاد اینه که فرض کنید یه دکمه داریم که میخواهیم توی رویداد click اون از رکورد n+1 به بعد رو برگردونه.ایا دستور صریح یا ترکیبی از دستورات هست که بتونیم این کارو انجام بدیم؟

  2. #2
    کاربر دائمی آواتار Salah Sanjabian
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مملکتی.......................
    پست
    284

    نقل قول: سلکت تاپ پیشرفته

    سلام میتونی از این کد استفاده کنی .

    DECLARE @T TABLE
    (
    ID Int IDENTITY(1,1),
    NAME nvarchar (100)
    )

    INSERT INTO @T
    ( NAME )
    VALUES ( N'Salah' ),('Ahmad'),('Mohammad')

    DECLARE @A INT
    SET @A=1

    SELECT * FROM
    (
    SELECT TOP (@A+1) id,NAME FROM @T ORDER BY id DESC
    )T
    ORDER BY id asc

  3. #3

    نقل قول: سلکت تاپ پیشرفته

    سلام.

    روش پست 2 هم میتونه روش خوبی باشه.
    ولی در نسخه 2012 یک امکان به نام Offset Fetch اضافه شده که میتونید بگید چند تا رکورد بعدی رو برگردونه و از چه رکوردی به بعد نیز برگردانه بشه.
    به عنوان مثال :

    Select * from sys.sysobjects
    Order by Name
    Offset 10 rows fetch next 50 rows only;


    با این دستور براساس نام مرتب شده و 10 تای اول Skip شده و فقط 50 تای بعد رو نمایش میدهد.
    نکته مهم این دستور این هست که حتما باید با دستور Order by ظاهر بشه وگرنه بهتون خطا خواهد داد.

    نکته دیگر اینکه این دستور SQL Standard هست و دستور top جز دستورات استاندارد SQL نیست.

    برای جزئیات بیشتر پیشنهاد میکنم اینجا رو ببینید.

  4. #4
    کاربر دائمی آواتار Salah Sanjabian
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مملکتی.......................
    پست
    284

    نقل قول: سلکت تاپ پیشرفته

    جناب صادقیان ممنون از پاسختون
    همونطور که میدونید یه مسئله رو به چندین شکل میشه حل کرد میشه به این صورت هم عمل کرد


    SELECT * FROM
    (
    SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 0)) AS Row ,* FROM @T
    )T
    WHERE Row >@A+1

  5. #5

    نقل قول: سلکت تاپ پیشرفته

    بله به این شکل هم میشه حل کرد. ولی از لحاظ Performance روشی که اشاره کردم روش مناسبی هست و Plan صحیحی نیز برای اون ایجاد میشه و اگر از ایندکس مناسبی نیز استفاده کنید میتونه در سرعت ، کمک خیلی زیادی بهتون بکنه.
    برای اینکه دقیقتر ببینید چه کاری دارید انجام میدین میتونید هر دو دستور رو بنویسید و در Session مربوطه دستور Set statistics io on رو اجرا کنید و وضعیت هر دو دستور رو بسنجید.

  6. #6
    کاربر دائمی آواتار Salah Sanjabian
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مملکتی.......................
    پست
    284

    نقل قول: سلکت تاپ پیشرفته

    حق باشماست .
    اصلا حواسم به Plan نبود بیشتر رو حل کویری به روشهای مختلف فکر میکرم

تاپیک های مشابه

  1. نوشتن بر روی دسک تاپ
    نوشته شده توسط mehrzad007 در بخش VB.NET
    پاسخ: 6
    آخرین پست: جمعه 28 فروردین 1383, 10:58 صبح
  2. جستجوی پیشرفته
    نوشته شده توسط مطهر در بخش مطالب مرتبط با بانکهای اطلاعاتی در VB6
    پاسخ: 3
    آخرین پست: یک شنبه 12 بهمن 1382, 10:45 صبح
  3. یک Text Box پیشرفته در VB.net
    نوشته شده توسط zehs_sha در بخش VB.NET
    پاسخ: 2
    آخرین پست: شنبه 17 آبان 1382, 10:17 صبح
  4. احتیاج به کتاب آموزشی VB6 پیشرفته
    نوشته شده توسط omid e در بخش برنامه نویسی در 6 VB
    پاسخ: 4
    آخرین پست: سه شنبه 25 شهریور 1382, 17:56 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •