これは私のテーブルです:私は自己結合次のようにして、親と子の関係を取得するために何ら問題はSQL Serverの親子(親はすべてをすべて参照)?
EmployeeID Employee ManagerID
---------------------------------
1 Anna 5
2 John 4
3 Steve 4
4 Lisa 1
5 Adam NULL
6 Per 1
ありません:
SELECT
E.EmployeeID,
E.Employee AS Employee,
E.ManagerID,
M.Employee AS Manager
FROM
Employee AS E
LEFT JOIN
Employee AS M ON E.ManagerID = M.EmployeeID
EmployeeID Employee ManagerID Manager
1 Anna 5 Adam
2 John 4 Lisa
3 Steve 4 Lisa
4 Lisa 1 Anna
5 Adam NULL NULL
6 Per 1 Anna
しかし、どのように私が作ることを約行くだろう親が階層全体のレベルを参照していることを確認してください。
私はこのように見えるようにテーブルをしたいと思います:
EmployeeID Manager Employee EmployeeID
5 Adam Anna 1
5 Adam Per 6
5 Adam Lisa 4
5 Adam John 2
5 Adam Steve 3
1 Anna Per 6
1 Anna Lisa 4
1 Anna John 2
1 Anna Steve 3
4 Lisa John 2
4 Lisa Steve 3
注:この例では、私はあなたがこれを試すことができますマネージャの3つのレベルを持っているが、より多くの
SQL Serverは、このためのhierarchyid型のタイプがあります。 –
別の方法として、[再帰CTE](https://technet.microsoft.com/en-us/library/ms186243%28v=sql.105%29.aspx?f=255&MSPPError=-2147217396)を使用する方法があります。レコード数やレベル数によっては、この方法が少し遅くなることがあります。 –
こんにちは、はい、私は再帰的なCTEを見てきましたが、レベルの知識なしでそれを使用する方法を完全に理解していませんでした。あなたは私が行くことができるこの質問の例を持っていますか? – Nils