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

نام تاپیک: بدست اوردن همه Child ها و parent ها از یک جدول

  1. #1
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    بدست اوردن همه Child ها و parent ها از یک جدول

    سلام
    یه table که parent ها و childها به صورت سلسله مراتبی هستن.

    name id parent
    2 1 a
    3 2 b
    4 3 c
    -1 4 d

    اگه بر اساس id=2 بخوام سر کنم باید همه Parent های اون و بیاره
    اینجوری-> d/c/b
    تو تاپیکای دیگه هم نگا کردم مشکلم حل نشد
    آخرین ویرایش به وسیله nafisehk : یک شنبه 19 آبان 1392 در 16:30 عصر دلیل: تصیح سول

  2. #2
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: بدست اوردن همه Child ها و parent ها از یک جدول

    پرنت هاش و بدست اوردم

    with cte as (

    select OrgUntID,OrgUntParentID,OrgUntName

    from OrgUnitInfo

    where OrgUntID=79

    unionall

    select o.OrgUntID,o.OrgUntParentID,o.OrgUntName

    from OrgUnitInfo o

    innerjoin cte c on (c.OrgUntParentID=o.OrgUntID)



    )


    select t.OrgUntName from cte t;


    اما کوئری که میخوام بنویسم پیچیدست و من باید این و بر اسا س orguntid با یه Tbale دیگه Join بزنم
    حالا دو تا سوال برام مطرح شده چه جوری این و با بقیه کوئری هام(که Join چن تاجدوله) join بزنم و اینکه نتیجه کوئری بالا اینجوریه

    کارمند حسابداری
    واحد حسابداری
    مدیر عامل
    میخوام این 3 تا سطر و تو یه سطر به این شکل "مدیرعامل/واحد حسابداری/کارمند حسابداری" نمایش بدم ....

    دوستان لطفا راهنمایی بفرمائید

  3. #3
    with cte as (

    select OrgUntID,OrgUntParentID,OrgUntName

    from OrgUnitInfo

    where OrgUntID=79

    unionall

    select o.OrgUntID,o.OrgUntParentID,o.OrgUntName

    from OrgUnitInfo o

    innerjoin cte c on (c.OrgUntParentID=o.OrgUntID)



    )


    select t.OrgUntName+ '/' from cte t FOR XML PATH('')

  4. #4
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: بدست اوردن همه Child ها و parent ها از یک جدول

    نقل قول نوشته شده توسط hamid_hr مشاهده تاپیک
    with cte as (

    select OrgUntID,OrgUntParentID,OrgUntName

    from OrgUnitInfo

    where OrgUntID=79

    unionall

    select o.OrgUntID,o.OrgUntParentID,o.OrgUntName

    from OrgUnitInfo o

    innerjoin cte c on (c.OrgUntParentID=o.OrgUntID)



    )


    select t.OrgUntName+ '/' from cte t FOR XML PATH('')

    سلام
    XML چی هست حالا؟میخوام نتیجه این و JOINبزنم با این روشی که شما گفتید میشه؟

  5. #5
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: بدست اوردن همه Child ها و parent ها از یک جدول

    کسی نیست که بتونه راهنمایی کنه؟!
    این و که نتونستم join ّزنم function هم تعریف میکنم خطا میده.....


    createfunction [dbo].[GetParentsOrgUnitName](@id int)

    returnstable



    as


    return (

    with cte as (

    select OrgUntID,OrgUntParentID,OrgUntName

    from OrgUnitInfo

    where OrgUntID=79

    unionall

    select o.OrgUntID,o.OrgUntParentID,o.OrgUntName

    from OrgUnitInfo o

    innerjoin cte c on (c.OrgUntParentID=o.OrgUntID)



    )


    select t.OrgUntName+'/'from cte t FORXMLpath('')



    )





    خطا:

    CREATE FUNCTION failed because a column name is not specified for column 1.



  6. #6

    نقل قول: بدست اوردن همه Child ها و parent ها از یک جدول

    XML چی هست حالا؟
    اين دستور for xml مياد خروجي رو ميريزه تو يك ركورد كه ميتوني ركوردو به عنوان فايل xml استفاده كني
    شما ميخواستي خروجيت كه به اين صورت بود
    2
    3
    4
    5
    بشه با اين صورت
    2/3/4/5
    با اين دستور چي ميشه
    select t.OrgUntName+ '/' from cte t FOR XML PATH('')

  7. #7

    نقل قول: بدست اوردن همه Child ها و parent ها از یک جدول

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

  8. #8
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: بدست اوردن همه Child ها و parent ها از یک جدول

    نقل قول نوشته شده توسط hamid_hr مشاهده تاپیک
    اين دستور for xml مياد خروجي رو ميريزه تو يك ركورد كه ميتوني ركوردو به عنوان فايل xml استفاده كني
    شما ميخواستي خروجيت كه به اين صورت بود
    2
    3
    4
    5
    بشه با اين صورت
    2/3/4/5
    با اين دستور چي ميشه
    select t.OrgUntName+ '/' from cte t FOR XML PATH('')
    این دستور درست عمل میکنه مشکل این بود که تو Join به مشکل برمیخوردم اما مشکلم حل شد یک فانکشن نوشتم به جای join
    فانکشن

    USE [OADataAR]



    GO


    /****** Object: UserDefinedFunction [dbo].[GetParentsOrgUnitName] Script Date: 11/11/2013 12:33:06 ******/


    SETANSI_NULLSON



    GO


    SETQUOTED_IDENTIFIERON



    GO


    ALTERfunction [dbo].[GetParentsOrgUnitName](@id int)

    returnstable



    return


    (


    with cte as (

    select OrgUntID,OrgUntParentID,OrgUntName,RecordDeleted

    from OrgUnitInfo

    where OrgUntID=@id

    unionall

    select o.OrgUntID,o.OrgUntParentID,o.OrgUntName,o.RecordDeleted

    from OrgUnitInfo o

    innerjoin cte c on (c.OrgUntParentID=o.OrgUntID)

    where o.RecordDeleted<>1



    and


    c.RecordDeleted<>1



    )


    select (select t.OrgUntName+'/'from cte t forxmlpath(''))as m



    )





    کوئری

    select ri.RolID,ri.RolName+'/'+(select*from GetParentsOrgUnitName(ri.OrgUntID))+'/'+oi.OrgName asRole

    from UserRole ur Leftjoin RoleInfo ri on ur.RoleID=ri.RolID

    leftjoin OrgInfo oi on oi.OrgID=ri.OrgID

    where

    ur.UserID=181 and(ur.RecordDeleted<>1 and ri.RecordDeleted<>1 and oi.RecordDeleted<>1)

  9. #9
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: بدست اوردن همه Child ها و parent ها از یک جدول

    نقل قول نوشته شده توسط حمیدرضاصادقیان مشاهده تاپیک
    سلام.
    از چه نسخه ای از SQL Server استفاده میکنید.؟
    sql2008 r2

  10. #10
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: بدست اوردن همه Child ها و parent ها از یک جدول

    نقل قول نوشته شده توسط nafisehk مشاهده تاپیک
    sql2008 r2

    1 سوال دیگه
    این اطلاعات وارد یه گرید میشه برای سرچ کردن باید یه تابع دیگه بنویسم که عبارتی که سرچ شده رو هم به عنوان پارامتر پاس بدم؟؟؟

    ri.RolName+'/'+(select*from GetParentsOrgUnitName(ri.OrgUntID))+'/'+oi.OrgName asRole
    این کویرئه که باید مقدار Function هم بررسی شه


    select ri.RolName+'/'+

    (select*from GetParentsOrgUnitName(ri.OrgUntID))+

    oi.OrgName asRole,ri.RolID,oui.OrgUntParentID

    from RoleInfo ri leftjoin RolTypeInfo rti

    on ri.RolTypeID=rti.RolTypeID

    leftjoin OrgUnitInfo oui

    on ri.OrgUntID=oui.OrgUntID

    leftjoin OrgInfo oi

    on ri.OrgID=oi.OrgID

    where

    ((ri.RolName like'%%'or ri.RolName like'%%')or(oi.OrgName like'%%'or oi.OrgName like'%%'))and

    (ri.RecordDeleted<>1 and rti.RecordDeleted<>1 and oi.RecordDeleted<>1)
    آخرین ویرایش به وسیله nafisehk : سه شنبه 21 آبان 1392 در 12:16 عصر

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

  1. بدست اوردن حاصل یه عبارت مثل 3+4*4/8
    نوشته شده توسط کاظم در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 9
    آخرین پست: شنبه 19 شهریور 1384, 18:37 عصر
  2. طریقه بدست اوردن مشکلات امنیتی در سیستم عاملها.
    نوشته شده توسط حمیدرضاصادقیان در بخش امنیت در شبکه
    پاسخ: 1
    آخرین پست: چهارشنبه 08 بهمن 1382, 06:20 صبح
  3. بدست اوردن تعداد رکوردهای یه فیلد
    نوشته شده توسط sunboy در بخش مطالب مرتبط با بانکهای اطلاعاتی در VB6
    پاسخ: 3
    آخرین پست: یک شنبه 23 شهریور 1382, 12:52 عصر
  4. بدست اوردن اختلاف دو تا تاریخ
    نوشته شده توسط amir_masoud در بخش VB.NET
    پاسخ: 3
    آخرین پست: سه شنبه 18 شهریور 1382, 00:00 صبح
  5. ****چگونگی بدست اوردن پسورد بایوس...****
    نوشته شده توسط Smran در بخش امنیت در شبکه
    پاسخ: 0
    آخرین پست: شنبه 15 شهریور 1382, 13:03 عصر

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

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