特定の条件で列の合計を取得しようとしています。つまり、列がサブタスクを持つ親であるか、サブタスクを持たない単なる親であるかによって異なります。タスクがサブタスクを持つ親である場合、サブタスクの「完了」列の合計のみが必要です。タスクが親のみの場合、親の完全な列の合計のみが必要です。- ただし、タスク (親または子) がすべて同じユーザーに関連している場合のみ。
たとえば、次の表の例では:
UserID | Parent_TaskID | TaskID | Complete
------ | ------------- | ------ | --------
435 | 149329 | 161280 | 1
435 | 149330 | 210717 | 2
435 | 149330 | 228100 | 3
435 | 156991 | 149330 | 1
169 | 458764 | 546540 | 2
169 | 456842 | 546541 | 2
169 | 456842 | 458764 | 0
TaskID 149330 は子 210717 & 228100 を持つ親であるため、149330 のその列のカウントは 5 です。つまり、親の完全な列は無視されます。161280 は親であるため、その場合は 0 のみが返されます。546540 は 458764 のサブタスクであるため、458764 の合計は 2 になります。
したがって、この結果は次のようになるはずです。
TaskID | Sum_complete
------- | ------------
161280 | 1
149330 | 5
546541 | 2
458764 | 2
これを行う方法はありますか?
SqlFiddle http://sqlfiddle.com/#!2/8295fにテーブルを作成しました
ありがとう、
以下を使用して親を取得できます。
select t.taskID, t.Parent_taskID, t.userID, t.complete
from task t
where t.Parent_taskID not in (
select tp.taskID
from task tp
where tp.userID = t.userID
)