в основном у меня есть такая структура:
- Сделка имеет и принадлежит многим каналам
- Сделка имеет много сделокПродажи
- Сделка принадлежит каналу
Когда я хочу найти сумму, проданную по сделке, я использую этот запрос:
SELECT targets.id,SUM(deal_sales.amount_sold) AS amount_sold
FROM deal_sales
INNER JOIN deals ON deals.id = deal_sales.deal_id
INNER JOIN targets ON deals.target_id = targets.id
WHERE targets.approved = 1 AND targets.active = 1
GROUP BY targets.id
все работает нормально, проблема в том, когда мне нужно отфильтровать по каналу, найти проданную суммусделкой в канале:
SELECT targets.id,SUM(deal_sales.amount_sold) AS amount_sold
FROM deal_sales
INNER JOIN deals ON deals.id = deal_sales.deal_id
INNER JOIN targets ON deals.target_id = targets.id
**INNER JOIN channels_deals ON channels_deals.deal_id = deals.id**
WHERE targets.approved = 1 AND targets.active = 1
GROUP BY targets.id
Когда я добавляю таблицу присоединения к каналам, amount_sold умножается на каждый канал, с которым связана сделка.Как я могу избежать этого?