私の脳は、これを理解しようとしてタピオカに変わっています. 部下と上司のテーブルがあります。すべての従業員はコース番号を持っています。これが例です。
3 つのフィールドがあります: employee_id、name、supervisor_id
Fred Wilkie はスーパーバイザーであり、彼の記録は ....
employee_id: 1
name: Fred Wilkie
supervisor_id: NULL
テッド・ウィルキーは下級労働者で、フレッドは彼の上司です。彼のエントリは次のようになります....
employee_id: 2
name: Ted Wilkie
supervisor_id: 1
クエリをどのように表示したいかは、employee_id、name、supervisor_id ですが、supervisor_id が NULL の場合、supervisor_id は employee_id と同じにする必要があります。
これはちょっとうまくいきます...(どうにかしてそれを改良する必要があると思います)
select employee_id, name, supervisor_id case when supervisor_id is NULL then employee_id else supervisor_id end from employees order by supervisor_id;
これの問題は、employee_idがsupervisor_idと等しいすべてのレコードを最初に注文し、次に残っている部下を吐き出すことです....
employee_id, name, supervisor_id
1, Fred Wilkie, 1
4, Gail Winston, 4
2, Ted Wilkie, 1
3, Lisa Wilkie, 1
5, Russ Cablas, 4
6, Ben Reynolds, 4
etc, etc, etc...
私が欲しいのはこれです......
employee_id, name, supervisor_id
1, Fred Wilkie, 1
2, Ted Wilkie, 1
3, Lisa Wilkie, 1
4, Gail Winston, 4
5, Russ Cablas, 4
6, Ben Reynolds, 4
etc, etc, etc...
上記の例では、最初のスーパーバイザー (Fred) がリストされ (employee_id = Supervisor_id)、次に彼のすべての部下がリストされています。あとはゲイル、その配下の皆さんなどなど。
私たちは大企業 (従業員 250 人) を経営しているため、これを MySQL ロジックに保持する方法が必要です。誰にもアイデアはありますか?
どうもありがとう!ジャニー