私はemployees
というテーブルを持っています。すべての従業員が上司であるため誰にも報告しない従業員以外のすべての従業員を上司に報告します。MySQL - 最高の従業員に達するまで従業員の上司を見つけてください
employeeNumber | reportsTo
---------------|-----------------
1002 | null
1056 | 1002
1143 | 1056
1165 | 1143
...
特定の従業員の上司であるすべての従業員の従業員番号を表示できます。 (つまり、彼が報告する人、その人が報告する従業員、など)
employeeNumber 1165
私は、クエリを実行するMySQLの文を書いたが、私は、これは読んで理解するために少し複雑すぎると考えてい
| employeeNumber |
|----------------|
| null |
| 1002 |
| 1056 |
| 1143 |
が得られるはずです:
はselect reportsTo as employeeNumber from employees where employeeNumber in
(select reportsTo from employees where employeeNumber in (select reportsTo from employees where
employeeNumber = 1165)) union select reportsTo from employees where employeeNumber in
(select reportsTo from employees where employeeNumber = 1165) union select reportsTo from employees
where employeeNumber = 1165;
私はどのような簡単なMySQLのステートメントを使用することができます同じ結果を得ますか?
を得るまであなたはので、私ドンここに..すべての親を取得するには非常に多くの似たようなケースをCTE再帰クエリを使用することができます
ループを手助けする必要があります – maSTAShuFu
@maSTAShuFu、再帰CTEはまだ開発中のMySQLバージョン8.0までサポートされていません。 –
私は@BillKarwinを参照してください...よくループと一時テーブルがあなたを助けるはずです – maSTAShuFu