0

私は2つのテーブルを持っています:

1. Team
id  group_head  initial_team
id : for id table (auto increment)
Group Head : employee id to add group head
initial team : initial team for this team


2. Team Sub
id  team_id     employee_id     parent  parent_id
id : id for table (auto increment)
team_id : id of the Team_table
employee_id : employee id
parent : value 0 if they child from team_sub, value 1 if they child from team
parent_id : if parent value 1 the parent id is id team, if parent value 0 the parent is id team sub

私の質問: チーム (グループ ヘッド) から合計の子供を知る方法は? または、id チームの一番下の子を知るにはどうすればよいですか? IDチームを削除すると、子も削除されます..

例 :

id team : 1

data from team_ sub :
status parent: 1 parent_id : 1 (id this data is 1)
status parent: 0 parent_id : 1 (id this data is 2)
status parent: 0 parent_id : 2 (id this data is 3)
status parent: 0 parent_id : 3 (id this data is 4)
status parent: 0 parent_id : 4 (id this data is 5) 

id team : 2

data from team_ sub :
status parent: 1 parent_id : 2 (id this data is 6)
status parent: 0 parent_id : 6 (id this data is 7)
status parent: 0 parent_id : 7 (id this data is 8)
status parent: 0 parent_id : 8 (id this data is 9)
status parent: 0 parent_id : 9 (id this data is 10) 

画像の例

ここで、親ステータスは 1 、parent_id はチーム ID です
。親ステータスは 0、親 ID はチームサブ ID です。

これは画像の関連データ ここに画像の説明を入力
です。私の英語が下手でしたら申し訳ありません...

id team_sub 10 は id team 2 の子で、id team_sub 5 は id team 1 の子です。

4

1 に答える 1

0

今は確認できませんが、私の理解が正しければ次のようになるはずです。

SELECT * FROM Team_Sub WHERE (parent_id = 0)

parent_id =1 aka sub_team の技術的な部分であるすべてのエントリを選択します

この条件を持つエントリの数だけが必要な場合:

SELECT COUNT(*) FROM Team_Sub WHERE (parent_id = 0)

例:

//Count all entries in Team_ID 1:

SELECT COUNT(*) FROM Team_Sub WHERE (parent_id = 1) 


//Select all entrys in Team_ID 2:


SELECT * FROM Team_Sub WHERE (parent_id = 2) 


//Count all Entries that do belong to an Team_ID:

SELECT COUNT(*) FROM Team_Sub WHERE NOT (parent_id = 0) 


//Select all Entries that do belong to an Team_ID:

SELECT * FROM Team_Sub WHERE NOT (parent_id = 0)

次の構造をお勧めします。

status parent: 1 parent_id : 2 (id this data is 6)
status parent: 0 parent_id : 2 (id this data is 7)
status parent: 0 parent_id : 2 (id this data is 8)
status parent: 0 parent_id : 2 (id this data is 9)
status parent: 0 parent_id : 2 (id this data is 10) 

このように、「parent_id」でチームを特定し、「parent」でチームの長を特定できます。

上記のような例では:

id 6 is Head of Team 2
id 7 is Subordinate of Team 2
id 8 is Subordinate of Team 2
id 9 is Subordinate of Team 2
id 10 is Subordinate of Team 2

これにより、「parent_id」と「parent」を簡単に決定することで、必要なエントリを照会できます

例えば:

//Just Heads of any Team:
SELECT * FROM Team_Sub WHERE (parent = 1)

//Just Head of a specific team:
SELECT * FROM Team_Sub WHERE (parent = 1) AND (parent_id="team id")

//Just Subordinates of any Team:
SELECT * FROM Team_Sub WHERE (parent = 0)

//Just Subordinates of a specific team:
SELECT * FROM Team_Sub WHERE (parent = 0) AND (parent_id="team id")

//Just Anybody of a specific team:
SELECT * FROM Team_Sub WHERE (parent_id="team id")

*参考までに: 値の名前にまだ依存関係がない場合は、"parent" を "head_of_team" に、"parent_id" を "team_id" に名前変更することをお勧めします*

于 2013-01-30T11:48:23.013 に答える