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

نام تاپیک: افزودن یک رکورد جدید بین دو رکورد در بانک اطلاعاتی

  1. #1

    Lightbulb افزودن یک رکورد جدید بین دو رکورد در بانک اطلاعاتی

    سلام دوستان عزیز
    در بانک اطلاعاتی Sql server چطور میتونیم یک رکورد جدید رو بین دو رکورد موجود در بانک اطلاعاتی ذخیره کنیم
    من خودم فکر می کنم که راه حلش در استفاده از اشاره گر ها باشه به صورتی که هر رکورد دارای یک ساب آی دی باشه که به رکورد مادر و در واقع به رکورد ما قبل خودش اشاره کنه
    ولی چیزی که واسم مهمه که چطوری اینکار رو با اشاره گر ها میشه انجام داد
    شما چه راه حلی رو پیشنهاد می کنید ...

  2. #2

    Smile نقل قول: افزودن یک رکورد جدید بین دو رکورد در بانک اطلاعاتی

    سلام
    ببین منظور سوالتو درست متوجه نمیشم اگر منظورت اینکه در یک جدول رکوردهایی داری که این رکوردها دارای فیلدی هستند که این فیلد بر اساس اعداد متوالی پر نمی شه و می خوای رکورد جدید بین دو رکورد در این فیلد اضافه بشه اما یک فیلد بعنوای کلید اصلی داری که اعداد متوالی دارن. این کار راحت دو تا عدد رو پیدا می کنی و عدد جدیدت رو برابر عدد کوچکتر بعلاوه یک می زاری .
    اگر سوالت غیر از اینکه بیشتر توضیح بده .

  3. #3
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: افزودن یک رکورد جدید بین دو رکورد در بانک اطلاعاتی

    سلام
    دو روش :
    1- یک فیلد عددی در جدول که توسط برنامه تولید می شود و هنگام درج مقدار بین دو مقدار از نقطه مورد نظر Shift اعداد صورت می گیرد
    2- دو فیلد عددی که هر فیلد مقدار رکورد قبلی را نگهداری میکند (این روش Select سختی خواهد داشت)

  4. #4

    نقل قول: افزودن یک رکورد جدید بین دو رکورد در بانک اطلاعاتی

    ممنون از جوابتون
    در توضيح بیشتر باید بگم که آقاي ASKaffash منظور منو خوب درک کردن
    اما در جواب ایشون در حالت اول که گفتين اینکار تراکنش زیادی رو برای دیتابیس خواهد داشت چون ما در هر لحظه که بخواهیم یک رکورد جدید اضافه کنیم باید کلیه مقادیر شیفت بشن
    من دنبال راه حل مورد دوم شما هستم
    واسه توضیح بیشتر در مثال زیر دو تا فیلد به نام id و subid داریم که در هر رکورد subid مقدار فیلد id رکورد قبل است ، من به طور مثال یک رکورد جدید تحت id=7 اضافه کردم که باید بعد از تراکنش بعد از رکورد با id=3 قرار بگیره
    توضيح اضافه اینکه من فکر میکنم باید طوری رفتار کرد که بعد از افزودن رکورد ها به صورت زیر با یک دستور روی همه رکورد ها یک update تحت عنوان فیلد NEWID انجام داد و با اینکار یک فیلد با مقادیر مرتب خواهیم داشت که میتوانیم در مراحل بعدی مرتب سازی را بر اساس فیلد جدید انجام داد


    ID SUBID
    0 0
    1 0
    2 1
    3 2
    4 7
    5 4
    6 5
    7 3

  5. #5

    نقل قول: افزودن یک رکورد جدید بین دو رکورد در بانک اطلاعاتی

    سلام،
    برای درج بین دو رکورد مشکلی وجود ندارد. کافیه از Update استفاده بشه. همانطور که خودتون بهش اشاره کردین.
    راجب Sort نیاز هست از یک الگوریتم بازگشتی استفاده بشه. که من راحتتر از CTE روشی رو سراغ ندارم. البته این CTE قابل استفاده در نسخه ی 2000 نیست.
    declare @t table (ID int, SUBID int)
    insert @t values
    (0, NULL),
    (1, 0),
    (2, 1),
    (3, 2),
    (4, 3),
    (5, 4),
    (6, 5)

    BEGIN TRAN
    UPDATE @t
    SET SUBID = 7
    WHERE SUBID = 3
    INSERT INTO @t VALUES (7, 3)
    COMMIT TRAN

    ;WITH CTE AS
    (
    SELECT ID, SUBID, [Level] = 1
    FROM @t
    WHERE SUBID IS NULL

    UNION ALL
    SELECT T.ID, T.SUBID, [Level] + 1
    FROM CTE
    JOIN @t AS T
    ON T.SUBID = CTE.ID
    )
    SELECT * FROM CTE
    ORDER BY [Level];
    /*
    ID SUBID Level
    ----------- ----------- -----------
    0 NULL 1
    1 0 2
    2 1 3
    3 2 4
    7 3 5
    4 7 6
    5 4 7
    6 5 8
    (8 row(s) affected)
    */

  6. #6

    Smile نقل قول: افزودن یک رکورد جدید بین دو رکورد در بانک اطلاعاتی

    جناب msalim بسیار تا بسیار ممنونم الگوریتم جالبی بود
    بازم تشکر زیادی ازتون میکنم چون چند روزی بود که گرفتار این مشکل بودم و نمی دونستم که چطوری حلش کنم
    خدا خیرت بده
    موفق باشی

برچسب های این تاپیک

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

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