2017-09-25 20 views
0

あなたは私を助けることができますか?SQLクエリの親子

Table: LOS 
ID Name   ParentID 
1 Item   Null 
2 Pharmacy  1 
3 Consumable  1 
4 Ethical   2 
5 Non Ethical  2 
6 MCCP   4 
7 Nurse   3 

Table: Item 
id ItemName lOS_Id Los_Name 
123 Panadol 6  MCCP 
321 Nacl  7  Nurse 


Expected Result. 
ID  ItemName ParentID ParentName LOS_Id Los_Name    
123 Panadol  2   Pharmacy   6 MCCP 
321 Nacl   3   Consumable  7 Nurse 

説明:los_id IDを使用してLOS表に参加からのParentIDは、その後、私は私が正しくあなたを理解願っていますし、このクエリはあなたの問題を解決しますPARENTIDは親

+0

あなたはこれまでに何を試しましたか?どういうことですか? –

+3

詳細説明を追加してください – Tanner

+0

予想される結果のitem.idとparentidの関係はどのようなものですか – Ajay2707

答えて

1

だけこの例を参照してください。

Declare @LOS table (ID int, Name nvarchar(50), ParentID int) 
Declare @Item table (ID int, ItemName nvarchar(50), lOS_ID int, lOS_Name nvarchar(50)) 

Insert into @LOS values (1, 'Item',null), (2 ,'Pharmacy', 1), (3 ,'Consumable', 1), (4 ,'Ethical', 2), (5 ,'Non Ethical', 2), (6 ,'MCCP', 4) 
, (7 ,'Nurse', 3) 

Insert into @Item values (123, 'Panadol',6 ,'MCCP'), (321, 'Nacl',7 ,'Nurse') 

select * from @LOS 
select * from @Item 


;with cte as 
(
    select i.id, ItemName, lOS_ID, lOS_Name, lOS_ID parentid, lOS_ID parentparentid, lOS_Name parentname from @Item i 
    join @los l on i.lOS_ID = l.id 
    -- where i.id = 123 
    union all 
    select 
     c.id, ItemName, lOS_ID, lOS_Name, l.ID parentid, l.ParentID parentparentid, l.Name parentname 
    from 
     cte c join @los l on c.parentparentid = l.id --and c.ParentID <> null 
) 
select * from cte where parentparentid = 1 
order by id 
1

を見つけるために取得します:)

select I.ID, I.ItemName, A.ParentID, A.ParentName, I.LOS_ID, I.LOS_Name from Item AS I join (
select l1.id, l1.name, l1.ParentID, l2.name as ParentName from LOS as l1 join LOS as l2 on l1.id = l2.ParentID 
) as A join on I.LOS_ID = A.ID 
関連する問題