помогите исправить выборку которая считает количество заказов с авансом есть выборка
SELECT count(order_id) as order_id, prepay_id
FROM `crm_orders`
LEFT JOIN crm_orders_prepay ON prepay_order_id = order_id
WHERE order_add_date between '2018-10-02 00:00:00' and '2018-10-02 23:59:59'
AND order_city = 7
AND prepay_id is not null
но есть проблема что она мне дублирует записи где было более 1 аванса к примеру
order_id
127000
127001
127002
127002
в итоге у меня вместо 3 выдает 4 заказа с авансом подскажите как правильно убрать дубли с таблицы crm_orders_prepay ?
помогло решение с count(distinct id_zakaza)
теперь возникла проблемай с суммой этих заказов
SELECT sum(order_cost_sum) as order_cost_sum
FROM `crm_orders`
LEFT JOIN crm_orders_prepay ON prepay_order_id = order_id
WHERE order_add_date between '2018-10-02 00:00:00' and '2018-10-02 23:59:59'
AND order_city = 7
AND prepay_id is not null
если повторить sum(distinct order_cost_sum) то чистит очень много лишнего ,ребята подскажите как побороть сумму ?
Решение по сумме следующее
select sum(order_cost_sum) as order_cost_sum
from #crm_orders
where order_add_date between '2018-10-02 00:00:00' and '2018-10-02 23:59:59'
and order_city = 7
and exists (
select prepay_order_id
from #crm_orders_prepay
where prepay_order_id = #crm_orders.order_id
)
;
есть еще одно решение
select sum(order_cost_sum) as order_cost_sum
from #crm_orders
where order_add_date between '2018-10-02 00:00:00' and '2018-10-02 23:59:59'
and order_city = 7
and order_id in (
select prepay_order_id
from #crm_orders_prepay
)
;
SELECT count(order_id) as order_id, prepay_id
FROM `crm_orders`
LEFT JOIN crm_orders_prepay ON prepay_order_id = order_id
WHERE order_add_date between '2018-10-02 00:00:00' and '2018-10-02 23:59:59'
AND order_city = 7
AND prepay_id is not null
group by prepay_id
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости