Если вы хотите получить максимальную дату (или последнюю дату) в своих результатах, используйте функцию max()
, а также используйте group by name , pname
в конце
max(date_add(a.end_date, interval 1 day)) as available_date
И если вы хотите организовать их по дате, затем напишите это в конце запроса:
group by name, pname order by available_date
, чтобы окончательный запрос выглядел так:
SELECT a.id,
a.name,
a.pname,
b.skill,
max(date_add(a.end_date, interval 1 day)) as available_date
FROM
(SELECT user.id,
concat(user.first_name, " ", user.last_name) AS name,
resource_allocated.project_id,
project.project_name AS pname,
resource_allocated.end_date
FROM USER
RIGHT JOIN resource_allocated ON user.id = resource_allocated.user_id
RIGHT JOIN project ON resource_allocated.project_id = project.id
WHERE resource_allocated.is_active=1) a
LEFT JOIN
(SELECT user.id,
concat(user.first_name, " ", user.last_name) AS name,
user_skill.skill_id,
skill.skill_name AS skill
FROM USER
RIGHT JOIN user_skill ON user.id = user_skill.user_id
RIGHT JOIN skill ON user_skill.skill_id = skill.id) b ON (a.id = b.id)
GROUP by name, pname , skill
ORDER by a.id, available_date;