MySQL左连接具有不同的值

时间:2019-07-07 15:00:12

标签: mysql sql database

我面临的问题是带有表(notified_providers)的左联接表(订单),notified_providers中有很多重复的数据,我需要留下一条记录而没有任何重复的联接表

试图使用distinct,但给我失败,这是我第一次使用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

我不想更改结果,它显示了正确的结构,但是重复数据的cuz返回了错误的值

0 个答案:

没有答案