0

正常に動作しているクエリがあります。

テーブル 3 の列 (子) がテーブル 1 にのみ関連しており、テーブル 2 の下ではなくテーブル 1 の下に表示されているが、同時に別の (子) がテーブル 2 に親を持っている場合 (通常はそうです) ) 現在行っているように、表 2 の下に表示されます。

つまり、Child 列は Table2 の行列名 (Father) の直下にありますが、Table2 とは関係なく Table1 の下にある場合があります。

ツリービューのクエリでそれをどのように出力できますか? c# で 3 つの for ループを使用して出力をプログラムする必要があると想定しています。2 番目のループでは、列が孫か子かを確認し、それをツリービューの 2 行目または 2 番目のノードにすることができますが、私はSQLでクエリを作成する際に問題があります。どんな助けでも大歓迎です。

以下のクエリは、すべての親、次に子、孫の子 (すべて正常に動作) を示していますが、望ましいのは、場合によっては子が父親の代わりになることです。

declare @x as xml
set @x =
(
SELECT distinct  
Table1.AssetSysID, Table1.Asset_ID , Table1.FromLR, Table1.Asset_ID + ', ' + Table1.[Desc2] as GarndFather,
Table2.ACISysID ,Table2.PAssetSysID, Table2.FeatureName + ', ' + Table2.[DESC] AS Father,
Table3.ITMSysID  ,Table3.Item_ID + ',' + Table3.[DESC] as Child
FROM  Table1 left outer join 
Table2 ON Table1.AssetSysID = Table2.PAssetSysID left outer join 
Table3 ON Table1.AssetSysID = Table3.AssetSysID AND Table2.ACISysID = Table3.ACISysID
where (Table1.AssetType = @AssetType)
for xml auto,root('xml')
)

Asp.Net Telerik Treeview DataBinding コード:

<DataBindings>
      <telerik:RadTreeNodeBinding DataMember="Table1" TextField="Assets" ValueField="AssetSysID"  ToolTip="Asset" ImageUrl="~/Images/DeleteIco.png"/>
      <telerik:RadTreeNodeBinding DataMember="Table2" TextField="Feature" ValueField="ACISysID" ToolTip="Feature" ImageUrl="~/Images/CutIco.png"/>
       <telerik:RadTreeNodeBinding DataMember="Table3" TextField="Equipment" ValueField="ITMSysID" ToolTip="Equipment" ImageUrl="~/Images/EditIco.png"/>

    </DataBindings> 

*最終コード:

 select Table1.AssetObjID as "@AssetObjID",
           Table1.Asset_ID as "@Asset_ID",
           Table1.FromLR as "@FromLR",
           Table1.AssetType + ', ' + Table1.StreetName + ', ' +  Table1.FromMunicNo   as "@FirstRow",
           (
           select Table2.ACIObjID as "@ACIObjID",
                  Table2.PAssetObjID as "@PAssetObjID",
                  Table2.Feature_ID + ', ' + Table2.FeatureName   AS "@ChildOfFirstRow",
                  (
                  select Table3.ITMObjID as "@ITMObjID",
                         Table3.Item_ID + ',' + Table3.[DESC] as "@GrandChildOfFirstRow"
                  from Table3
                  where Table1.AssetObjID = Table3.AssetObjID and 
                        Table2.ACIObjID = Table3.ACIObjID
                  for xml path('Table3'), type
                  )
           from Table2
           where Table1.AssetObjID = Table2.PAssetObjID
           for xml path('Table2'), type
           ),
(
           select Table3.ITMObjID as "@ITMObjID",
                         Table3.Item_ID + ',' + Table3.[DESC] as "@GrandChildOfFirstRow"
                  from Table3
                  where Table1.AssetObjID = Table3.AssetObjID and 
                        Table2.ACIObjID <> Table3.ACIObjID
                  for xml path('Table3'), type
)
    from Table1
    where Table1.AssetType = 'xxxx'
    for xml path('Table1'), root('xml')
4

1 に答える 1

1

Mikael Erikssonからアイデアを得て、仕事中のチーム リーダーの助けを借りて

     select Table1.AssetObjID as "@AssetObjID",
               Table1.Asset_ID as "@Asset_ID",
               Table1.FromLR as "@FromLR",
               Table1.AssetType + ', ' + Table1.StreetName + ', ' +  Table1.FromMunicNo   as "@FirstRow",
               (
               select Table2.ACIObjID as "@ACIObjID",
                      Table2.PAssetObjID as "@PAssetObjID",
                      Table2.Feature_ID + ', ' + Table2.FeatureName   AS "@ChildOfFirstRow",
                      (
                      select Table3.ITMObjID as "@ITMObjID",
                             Table3.Item_ID + ',' + Table3.[DESC] as "@GrandChildOfFirstRow"
                      from Table3
                      where Table1.AssetObjID = Table3.AssetObjID and 
                            Table2.ACIObjID = Table3.ACIObjID
                      for xml path('Table3'), type
                      )
               from Table2
               where Table1.AssetObjID = Table2.PAssetObjID
               for xml path('Table2'), type
               ),
(
               select Table3.ITMObjID as "@ITMObjID",
                             Table3.Item_ID + ',' + Table3.[DESC] as "@GrandChildOfFirstRow"
                      from Table3
                      where Table1.AssetObjID = Table3.AssetObjID and 
                            Table2.ACIObjID <> Table3.ACIObjID
                      for xml path('Table3'), type
)
        from Table1
        where Table1.AssetType = 'xxxx'
        for xml path('Table1'), root('xml')

したがって、次のようになります。

<Table1 atrributes......... FirstRow=".........."/>
<Table2 atrributes......... ChildOfFirstRow="..........">
<Table3 atrributes......... GrandChildOfFirstRow=".........."/>
</Table2>
<Table3 atrributes......... GrandChildOfFirstRow="This GrandChild took the importance as equal to ChildOfFirstRow"/>
于 2012-09-16T19:13:16.357 に答える