У меня возникла проблема с левой таблицей соединений (заказы) с таблицей (messages_providers), в уведомленных поставщиках много повторяющихся данных, мне нужно объединить таблицу с одной записью без дубликатов
Пыталсяиспользовать разные, но дает сбой, я впервые использую distinc с левым соединением
SELECT `u`.`firstName` AS `u.firstName`,`u`.`lastName` AS `u.lastName`,`u`.`phoneNumber` AS `u.phoneNumber`,
count(distinct `np`.`id`) as `count_notified_providers`,
coalesce(sum(CASE WHEN (`o`.`orderStatus` = 4) THEN (1) ELSE (0) END), 0) as `sum_Completed`,
coalesce(sum(CASE WHEN (`np`.`status` = 1 OR `np`.`status` = 2) THEN (1) ELSE (0) END), 0) as `sum_Total_accepted`,
coalesce(sum(CASE WHEN (`o`.`orderStatus` = 5) THEN (1) ELSE (0) END), 0) as `sum_Cancelled_order_by_customer`,
coalesce(sum(CASE WHEN (`o`.`orderStatus` = 11) THEN (1) ELSE (0) END), 0) as `sum_Cancelled_order_by_provider`,
coalesce(sum((CASE WHEN (`o`.`orderStatus` = 11) THEN (1) ELSE (0) END + CASE WHEN (`o`.`orderStatus` = 5) THEN (1) ELSE (0) END + CASE WHEN (`o`.`orderStatus` = 4) THEN (1) ELSE (0) END)), 0) as `sum_Total_orders`
FROM `providers` AS `p`
LEFT JOIN `users` AS `u`
ON `p`.`userId` = `u`.`id`
LEFT JOIN `orders` AS `o`
ON `p`.`id` = `o`.`providerId`
LEFT JOIN `notified_providers` AS `np`
ON `o`.`id` = `np`.`orderId`
WHERE (((DATE(DATE_FORMAT((`o`.`createdAt`),"%Y-%m-%d"))) > date(now() - interval 1 week)))
GROUP BY `u`.`firstName`,`u`.`lastName`,`u`.`phoneNumber`
ORDER BY `u.firstName` ASC, `u.lastName` ASC, `count_notified_providers` DESC
Я не хочу менять результат, он показывает правильную структуру, но из-за дублированных данных он возвращает неправильные значения