This is my table:
project_id | task_id | task_name | task_status | ---------+---------+-----------+-------------+ 1 12 foo complete 2 13 foo complete 3 1210 bar complete 4 1211 bar none 5 1212 xyz none 6 1213 zyz none
I want create query where I can select only tasks_name
where task_status
“complete” for both task_id
. For example one task which name foo
have two task_id
such as 12 and 13 and both of them have task_status
complete. In contrast task with name bar
have only one task_id
“completed”, so its fall for my condition.
I expect get table like this:
project_id | task_id | task_name | task_status | ---------+---------+-----------+-------------+ 1 12 foo complete 2 13 foo complete
How I can select, check and return where task_name
is same for each task_id
and both of them have task_status
completed
Advertisement
Answer
It is much easier to do this using min, max and a subquery.
Select * From Tbl Where task_name In (Select task_name From Tbl Group by task_name Having Min(task_status)=Max(task_status) And Max(task_status)='complete')
Data output:
project_id | task_id | task_name | task_status ___________|_________|___________|____________ 1 | 12 | foo | complete 2 | 13 | foo | complete