私はemp表を持って、を選択し、親と子
CREATE TABLE [dbo].[Emp](
[EmpId] [int] NULL,
[EmpName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ManagerId] [int] NULL
) ON [PRIMARY]
、私は従業員の名前とその管理者名を一覧表示するテーブルに値を下回る
Insert Into Emp Values(1,'A',0)
Insert Into Emp Values(2,'B',1)
Insert Into Emp Values(3,'C',2)
Insert Into Emp Values(4,'D',2)
Insert Into Emp Values(5,'E',4)
Insert Into Emp Values(6,'F',4)
Insert Into Emp Values(7,'G',4)
Insert Into Emp Values(8,'H',6)
Insert Into Emp Values(9,'I',5)
Insert Into Emp Values(10,'J',7)
Insert Into Emp Values(11,'K',4)
を挿入selectステートメント。
私がやっていることは、すべてのマネージャー名とそのIDを持つ一時テーブルを作成することです。
次に、Idに基づいてマネージャーテーブルから名前を取得します。
しかし、これは正しい方法ではないことは分かっていますが、実際は複雑です。
感謝を。一方、私はこれを書いて、あなたが私が間違っている場所に電話してください。 セレクトE(EMPどこEMPID IN(EMPからマネージャーIDを選択) からDISTINCT EMPID、のempName を選択 ) AS ManagerInfo(EMPID、のempName) WITH **私はちょうどCTEについて読んだことがある、これは私の試み です。 EmpName、MI.EmpName EmpからINNER JOIN ManagerInfo MI ** – Zerotoinfinity
@Zerotoinfinite:あなたのCTEは再帰的ではありません.... –
どのように再帰的にすることができますか? – Zerotoinfinity