I have two tables: user
and projects
, with a one-to-many relationship between two.
projects
table has field status
with project statuses of the user.
status
can be one of:
launched, confirm, staffed, overdue, complete, failed, ended
I want to categorize users in two categories:
- users having projects in
launched
phase - users having projects other than
launched
status.
I am using the following query:
SELECT DISTINCT(u.*), CASE
WHEN p.status = 'LAUNCHED' THEN 1
ELSE 2
END as user_category
FROM users u
LEFT JOIN projects p ON p.user_id = u.id
WHERE (LOWER(u.username) like '%%%'
OR LOWER(u.personal_intro) like '%%%'
OR LOWER(u.location) like '%%%'
OR u.account_status != 'DELETED'
AND system_role=10 AND u.account_status ='ACTIVE')
ORDER BY set_order, u.page_hits DESC
LIMIT 10
OFFSET 0
I am facing duplicate records for following scenario:
If user has projects with status launched
as well as overdue
, complete
or failed
, then that user is recorded two times as both the conditions in CASE
are satisfying for that user.
Please suggest a query where a user that has any project in launched
status gets his user_category
set to 1
. The same user should not be repeated for user_category 2
.