特定のマネージャの従業員階層全体を取得しようとしています。以下のようPostgreSQLの再帰が予期しない結果を返す
の表は、次のとおりです。私は、次の再帰実行すると
| id | manager |
-----------------
| 103 | 138 |
| 125 | 138 |
| 114 | 103 |
| 122 | 103 |
| 138 | NULL |
| 144 | 222 |
| 222 | NULL |
:
id :: int
manager :: foreign key(users)
データ
WITH RECURSIVE managed AS (
SELECT manager AS manager_id, id AS employee_id
FROM users
WHERE manager = 138
UNION
SELECT u2.manager AS manager_id, u2.id as employee_id
FROM users u2
INNER JOIN managed m ON m.employee_id = u2.id
)
select *
from managed;
を私が間違った結果を受け取っ:
予想されるが
は:
| employee_id | manager_id |
-----------------------------
| 103 | 138 |
| 125 | 138 |
| 114 | 103 |
| 122 | 103 |
(正確に...下記のリンクショーとして)私は多くの例が含ま::私の質問に似ていますが、それらのどれも働いたthis oneを、試してみました。 ..私はUNION ALL
実行してクエリを実行しようとした
決して終了する(数分後、私は実行を中止しなければならなかった)事前に
感謝:)
ここでは
私はそれを試したと確信しています...ありがとうございます:) –