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

نام تاپیک: فرزند و نزدیکترین والد دارای شرط

  1. #1
    کاربر دائمی
    تاریخ عضویت
    تیر 1388
    محل زندگی
    IR
    پست
    101

    Thumbs up فرزند و نزدیکترین والد دارای شرط

    سلام ،وقتتون بخیر
    با ساختار درختی دارم که table
    a
    / \
    b e
    |
    c
    /
    d
    / \
    f g
    بطور مثالc,a دارای شرط ارجاع هستن
    بطور مثال اگر fخواست ارجاع بده به cو اگر ث خواست ارجاع بده به a بره.
    واضحتر بگم :
    IDفیلد فرزند را داریم میخواهیم IDنزدیکترین والد را که دارای شرط ارجاع است را پیدا کنیم و اینکه نمیدونیم بین والد و فرزندی که نزدیکترین والد دارای شرط ارجاع است فاصله وجوددارد

    شرط ارجاع این است که: IDرکوردی که دارای شرط ارجاع است در یک table دیگه آمده باشه
    لطفا راهنماییم کنید میخوام در قالبstoreproduce باشه
    موفق و مویید باشید

  2. #2

    نقل قول: فرزند و نزدیکترین والد دارای شرط

    چند چیز رو اصلاح کنید تا بشه جواب داد:

    1. گراف/درخت ای که رسم کردین خوانایی نداره، لطفا داخل تگ code قرار بدین تا alignment یا چیدمانش بهم نریزه.

    2. باید در توضیحاتتون اشتباهی صورت گرفته باشه. مثلا گره ی f فرزند مستقیم گره ی c نیست.

    3.
    بطور مثال اگر fخواست ارجاع بده به cو اگر ث خواست ارجاع بده به a بره.
    باید این "ث" حرف e باشد. فراموش کردین که زبان سیستم را عوض کنید.

    4. ساختار جدولتون را بایستی پست کنید.

    5. برای درک هرچه سریعتر و دقیق تر مشکلات بهتر است یک نمونه از داده ها و یک نمونه از نتیجه ی مورد نظر پست کنید.
    وبلاگ من (Advanced SQL Querying)

  3. #3
    کاربر دائمی
    تاریخ عضویت
    تیر 1388
    محل زندگی
    IR
    پست
    101

    Unhappy نقل قول: فرزند و نزدیکترین والد دارای شرط

    سلام ،وقتتون بخیر
    با ساختار درختی دارم که table1
              
    * 1
    / \
    2 3
    |
    4*
    \
    5
    / \
    7 6


    tabe1

    parentID , ID
    1
    1 2
    1 3
    2 4
    4 5
    5 6
    5 7

    دوتا سوال داشتم:
    سوال اولم :
    میخوام اگه یکی از نودهای پایانی داشته باشم به نود شروع برسم و در این فاصله ی رسیدن به نود شروع به ترتیب نودها را بدهد و در قالب یک storeproduct باشد
    به طور مثال اگر به عنوان ورودی من 7 را وارد storeproduct بکنم خروجی به من رشته ی 12457 را بدهد.
    سوال دوم :
    اگر یک tableدیگه داشته باشم که تعدادی از نودهای table قبل را شامل میشود به نام table2
    که این نودها را در ساختار درختی با کاراکتر * مشخص کرده ام.

    ID table1_ID
    1 1
    2 4

    هر نودی از table 1 خواست ارجاعی بفرستد به نزدیکترین نودی میرسد که در table 2 وجوداشته باشد
    بطور مثال اگر ورودی 7 باشد خروجی 4 را بدهد و اگر ورودی 2 باشد خروجی 1 را بدهد.
    آخرین ویرایش به وسیله clever student : یک شنبه 05 اردیبهشت 1389 در 09:30 صبح

  4. #4

    نقل قول: فرزند و نزدیکترین والد دارای شرط

    از چه نسخه ای استفاده می کنین؟ 2005 و بالاتر؟
    وبلاگ من (Advanced SQL Querying)

  5. #5
    کاربر دائمی
    تاریخ عضویت
    تیر 1388
    محل زندگی
    IR
    پست
    101

    نقل قول: فرزند و نزدیکترین والد دارای شرط

    نقل قول نوشته شده توسط msalim مشاهده تاپیک
    از چه نسخه ای استفاده می کنین؟ 2005 و بالاتر؟
    ازنسخه ی 2005

  6. #6

    نقل قول: فرزند و نزدیکترین والد دارای شرط

    این جواب سوال اول هست:
    سوال اولم :
    میخوام اگه یکی از نودهای پایانی داشته باشم به نود شروع برسم و در این فاصله ی رسیدن به نود شروع به ترتیب نودها را بدهد و در قالب یک storeproduct باشد
    به طور مثال اگر به عنوان ورودی من 7 را وارد storeproduct بکنم خروجی به من رشته ی 12457 را بدهد.

    CREATE PROC tree (@nodeID INT) AS
    BEGIN
    ;WITH cte AS
    (SELECT node, parent
    FROM table_name
    WHERE node = @nodeID
    UNION ALL
    SELECT t.node, t.parent
    FROM cte
    JOIN table_name t
    ON t.node = cte.parent)
    SELECT node + ''
    FROM cte
    FOR XML PATH('')
    END
    وبلاگ من (Advanced SQL Querying)

  7. #7
    کاربر دائمی
    تاریخ عضویت
    تیر 1388
    محل زندگی
    IR
    پست
    101

    Red face نقل قول: فرزند و نزدیکترین والد دارای شرط

    نقل قول نوشته شده توسط msalim مشاهده تاپیک
    این جواب سوال اول هست:


    CREATE PROC tree (@nodeID INT) AS
    BEGIN
    ;WITH cte AS
    (SELECT node, parent
    FROM table_name
    WHERE node = @nodeID
    UNION ALL
    SELECT t.node, t.parent
    FROM cte
    JOIN table_name t
    ON t.node = cte.parent)
    SELECT node + ''
    FROM cte
    FOR XML PATH('')
    END
    برنامه اش را نوشتم ولی error
    منظورتون از cte چی بوده
    و اگه لطف کنید سوال دوم هم جواب بدید ممنون میشم.

  8. #8

    نقل قول: فرزند و نزدیکترین والد دارای شرط

    پیغام خطا را ارسال کنید.
    اون CTE یک نام برای عبارت جدولی هست. شما نیازی به تغییر آن ندارین. فقط نام جدول و ستونهایتون را با نام هایی که در کد قرار دادم تعویض کنید.
    جواب سوال دوم هم خواهم داد.
    وبلاگ من (Advanced SQL Querying)

  9. #9
    کاربر دائمی
    تاریخ عضویت
    تیر 1388
    محل زندگی
    IR
    پست
    101

    Lightbulb نقل قول: فرزند و نزدیکترین والد دارای شرط

    نقل قول نوشته شده توسط msalim مشاهده تاپیک
    پیغام خطا را ارسال کنید.
    اون CTE یک نام برای عبارت جدولی هست. شما نیازی به تغییر آن ندارین. فقط نام جدول و ستونهایتون را با نام هایی که در کد قرار دادم تعویض کنید.
    جواب سوال دوم هم خواهم داد.
    این تغییراتی است که من روی Query انجام دادم

    CREATEPROC tblUsrPost (@UP_ID INT)AS
    BEGIN
    ;WITH cte AS
    (SELECT UP_ID, UP_UsrPostIDParent
    FROM tblUsrPost
    WHERE UP_ID = @UP_ID
    UNIONALL
    SELECT t.UP_ID, t.UsrPostIDParent
    FROM cte
    JOIN tblUsrPost t
    ON t. UP_ID = cte.UP_UsrPostIDParent)
    SELECT UsrPostIDParent +' '
    FROM cte
    FORXMLPATH(' ')
    END

    متن error

    Msg 207, Level 16, State 1, Procedure tblUsrPost, Line 8
    Invalid column name 'UsrPostIDParent'.

  10. #10

    نقل قول: فرزند و نزدیکترین والد دارای شرط

    به اون خطی که در پستتون bold و رنگی کردم توجه کنید.
    اون نام ستون بایستی به این نام تغییر کنه: UP_UsrPostIDParent
    وبلاگ من (Advanced SQL Querying)

  11. #11
    کاربر دائمی
    تاریخ عضویت
    تیر 1388
    محل زندگی
    IR
    پست
    101

    Lightbulb نقل قول: فرزند و نزدیکترین والد دارای شرط

    مرسی اون مشکل حل شد
    منظورش از این error چیه ؟
     
    Msg 2714, Level 16, State 3, Procedure tblUsrPost, Line 3
    There is already an object named 'tblUsrPost' in the database.

  12. #12

    نقل قول: فرزند و نزدیکترین والد دارای شرط

    جواب سوال دوم:

    CREATE PROC tree_2 (@nodeID INT) AS
    BEGIN
    ;WITH cte AS
    (SELECT node, parent, 1 as level
    FROM table_name
    WHERE node = @nodeID
    UNION ALL
    SELECT t.node, t.parent, cte.level+1 as level
    FROM cte
    JOIN table_name t
    ON t.node = cte.parent)
    SELECT TOP 1 cte.node
    FROM cte
    INNER JOIN table2 t2
    ON cte.node = t2.table1ID
    ORDER BY level ASC
    END


    این بار دقت داشته باشین نام های ستونهایتان را صحیح وارد کنید.
    وبلاگ من (Advanced SQL Querying)

  13. #13

    نقل قول: فرزند و نزدیکترین والد دارای شرط

    نقل قول نوشته شده توسط clever student مشاهده تاپیک
    مرسی اون مشکل حل شد
    منظورش از این error چیه ؟
     
    Msg 2714, Level 16, State 3, Procedure tblUsrPost, Line 3
    There is already an object named 'tblUsrPost' in the database.
    قبلا همچین SP در بانکتون ایجاد کردین. کلید واژه ی CREATE را به ALTER تغییر بدین و دوباره اجرا کنید. یا اینکه یک نام دیگر به SP بدین.
    وبلاگ من (Advanced SQL Querying)

  14. #14
    کاربر دائمی
    تاریخ عضویت
    تیر 1388
    محل زندگی
    IR
    پست
    101

    Lightbulb نقل قول: فرزند و نزدیکترین والد دارای شرط

    برای این که 1store بنویسم sqlserver newquery را میزنم
    حالا که میخوام از store تستی اجرایی بگیرم باید توی یک store دیگه
    execute
    from
    .........که مقدار اولیه بدم
    اگه میشه روش execute هم بگید؟

  15. #15

    نقل قول: فرزند و نزدیکترین والد دارای شرط

    نقل قول نوشته شده توسط clever student مشاهده تاپیک
    برای این که 1store بنویسم sqlserver newquery را میزنم
    حالا که میخوام از store تستی اجرایی بگیرم باید توی یک store دیگه
    execute
    from
    .........که مقدار اولیه بدم
    اگه میشه روش execute هم بگید؟
    گویا دارین با express کار می کنین. متاسفانه من با اون آشنایی ندارم.
    وبلاگ من (Advanced SQL Querying)

  16. #16
    کاربر دائمی
    تاریخ عضویت
    تیر 1388
    محل زندگی
    IR
    پست
    101

    Lightbulb نقل قول: فرزند و نزدیکترین والد دارای شرط

    نقل قول نوشته شده توسط msalim مشاهده تاپیک
    گویا دارین با express کار می کنین. متاسفانه من با اون آشنایی ندارم.
    نه خیر باDeveloper کار میکنم منظورتون از express چیه؟
    منظور من ازexecute است که توی یک store دیگه store هم را فراخوانی کنم و مقدار دهی اولیه کنم؟چون الان فقط خروجی به من

    Command(s) completed successfully.
    را میدهد.

  17. #17

    نقل قول: فرزند و نزدیکترین والد دارای شرط

    Express نسخه ی فشرده ی SQL Server هست که داخل VS استفاده می شه.
    حالا منظورتون را متوجه شدم.

    عبارت EXEC به این شکل هست:
    EXECUTE SP_name @par1 = value1, @par2 = value2
    وبلاگ من (Advanced SQL Querying)

  18. #18
    کاربر دائمی
    تاریخ عضویت
    تیر 1388
    محل زندگی
    IR
    پست
    101

    Lightbulb نقل قول: فرزند و نزدیکترین والد دارای شرط

    نقل قول نوشته شده توسط msalim مشاهده تاپیک
    Express نسخه ی فشرده ی SQL Server هست که داخل VS استفاده می شه.
    حالا منظورتون را متوجه شدم.

    عبارت EXEC به این شکل هست:
    EXECUTE SP_name @par1 = value1, @par2 = value2
    لطف کنید بگید چرا این error میده؟ این کد نباید fromداشته باشه ؟

    Msg 6850, Level 16, State 1, Procedure Post, Line 4
    Row name ' ' contains an invalid XML identifier as required by FOR XML; ' '(0x0020) is the first character at fault.

  19. #19

    نقل قول: فرزند و نزدیکترین والد دارای شرط

    چه کدی را اجرا کردین که این پیغام داده شده است؟ لطفا کدی که اجرا کردین/می کنین را پست کنید تا بررسی کنم.
    وبلاگ من (Advanced SQL Querying)

  20. #20
    کاربر دائمی
    تاریخ عضویت
    تیر 1388
    محل زندگی
    IR
    پست
    101

    Lightbulb نقل قول: فرزند و نزدیکترین والد دارای شرط

    نقل قول نوشته شده توسط msalim مشاهده تاپیک
    چه کدی را اجرا کردین که این پیغام داده شده است؟ لطفا کدی که اجرا کردین/می کنین را پست کنید تا بررسی کنم.

    EXECUTE
    spPost @UP_ID=69

  21. #21
    کاربر دائمی
    تاریخ عضویت
    تیر 1388
    محل زندگی
    IR
    پست
    101

    نقل قول: فرزند و نزدیکترین والد دارای شرط

    (SELECT node, parent 
    FROM table_name
    WHERE node = @nodeID
    UNION ALL
    SELECT t.node, t.parent
    FROM cte
    JOIN table_name t
    ON t.node = cte.parent)
    SELECT node + ''
    FROM cte
    FOR XML PATH('')
    END

    روال این query خیلی خوبه فقط اگر اینجا یک فیلدسومی از نوع nvarchar50 که عنوان فیلد هایمان است داشته باشیم و رشته ی خروجی که تولید میشه میخواهم همین خروجی فعلی باشه منتها موقع نمایش فیلد سوم که عنوانهایمان باشد را نمایش دهد.
    مرسی
    آخرین ویرایش به وسیله محمد سلیم آبادی : یک شنبه 05 اردیبهشت 1389 در 15:11 عصر

  22. #22

    نقل قول: فرزند و نزدیکترین والد دارای شرط

    من کامل متوجه نشدم.
    منظورتون این است که عنوان گره هم همراه با نام گره نمایش داده بشه؟
    می تونید در کد پست قبلی که رنگی کردم نام فیلد مورد نظرتون را اضافه کنید و در SELECT آخر این اصلاح رو انجام بدین:

    SELECT node +' '+ caption + ''
    FROM cte
    FOR XML PATH('')
    END


    فقط توجه داشته باشین که اگر ستون Node از نوع عددی هست تبدیل به رشته ای کنید با تابع CAST.
    وبلاگ من (Advanced SQL Querying)

  23. #23
    کاربر دائمی
    تاریخ عضویت
    تیر 1388
    محل زندگی
    IR
    پست
    101

    Wink نقل قول: فرزند و نزدیکترین والد دارای شرط


    ALTER
    PROCEDURE [dbo].[spPost] (@UP_ID smallint)AS
    BEGIN
    ;WITH cte AS
    (SELECT UP_ID, UP_UsrPostIDParent
    FROM tblUsrPost
    WHERE UP_ID = @UP_ID
    UNIONALL
    SELECT t.UP_ID , t.UP_UsrPostIDParent,t.UP_Title
    FROM cte
    JOIN tblUsrPost t
    ON t. UP_ID = cte.UP_UsrPostIDParent)
    SELECTCAST(UP_ID)+' '+UP_Title+' '
    FROM cte
    FORXMLPATH('')
    END

    سلام
    به فیلد جدیدی که اضافه کرده ام و به تابع error ،CASTمیگیره ؟
    فیلد جدیدم به نام UP_Titleاست

  24. #24

    نقل قول: فرزند و نزدیکترین والد دارای شرط

    SELECT CAST(UP_ID as varchar(4))+'  '+UP_Title+' '
    وبلاگ من (Advanced SQL Querying)

  25. #25
    کاربر دائمی
    تاریخ عضویت
    تیر 1388
    محل زندگی
    IR
    پست
    101

    Lightbulb نقل قول: فرزند و نزدیکترین والد دارای شرط

    مرسی اون کد را هم اضافه کردم ولی این error را میدهد

    Msg 205, Level 16, State 1, Procedure spPost, Line 6
    All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.

  26. #26

    نقل قول: فرزند و نزدیکترین والد دارای شرط

    توجه نکردین. به پست شماره 21 دوباره دقت کنید (خطهای رنگی). بایستی این UP_title هم به SELECT اولی اضافه کنید.
    وبلاگ من (Advanced SQL Querying)

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

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