自己結合を使用してSQLSERVERデータベースからデータを取得し、GridViewにデータを表示しています。
DepartmentMstテーブルのデータ:
DepartmentID DepartmentName IsActive DepartmentParentID
3 Admin Panel 1 0
4 Human Resource 1 0
5 Information Technology 1 0
6 Operational 1 0
21 TestDepartment 1 3
22 Logistics 1 3
上記のデータから、AdminPanel部門には、メイン部門、つまりAdminPanelに属するDepartmentParentID=3の両方のSubDepartmentTestDepartmentとLogisticsがあることがわかります。
次に、DepartmentNameとそのSubDepartmentsを表示するグリッドビューでデータを表示します。
私の質問:
SELECT dpt1.DepartmentID as DepartmentID
,dpt1.DepartmentName as DepartmentName
,dpt1.DepartmentParentID as ParentDepartmentID
,dpt2.DepartmentName as ChildDepartment
,dpt1.IsActive
FROM DepartmentMst dpt1,DepartmentMst dpt2
where (dpt1.DepartmentID=dpt2.DepartmentParentID) and dpt2.IsActive=1
order by DepartmentID
O / P:
DepartmentID DepartmentName ParentDepartmentID ChildDepartment IsActive
3 Admin Panel 0 TestDepartment 1
3 Admin Panel 0 Logistics 1
しかし、SubDepartmentNameを持つすべてのDepartmentNameが必要です。いずれかの部門に親がない場合、つまりDepartmentParentID = 0の場合は、MainDepartmentとして表示する必要があります。それ以外の場合は、親部門名として表示する必要があります。
例えば:
DepartmentID DepartmentName IsActive DepartmentParentID ParentDeptName
3 Admin Panel 1 0 MainDept
4 Human Resource 1 0 MainDept
5 Information Technology 1 0 MainDept
6 Operational 1 0 MainDept
21 TestDepartment 1 3 AdminPanel
22 Logistics 1 3 AdminPanel
上記を出す方法は?感謝します!