essentiellement j'ai cette structure:mysql INNER JOIN provoquant la multiplication
- affaire a et appartient à de nombreux canaux
- affaire a beaucoup DealSales
- affaire appartient à Channel
Quand je veux pour trouver le montant vendu par un accord, j'utilise cette requête:
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
son travail très bien, le problème est quand j'ai besoin de filtrer par canal, trouver le montant vendu par un accord dans un canal:
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
Quand j'ajouter la jointure à la table des canaux, la amount_sold est multiplié par chaque canal avec lequel une relation est en relation. Comment puis-je éviter ça?
sont des règles numéro 1 et 3 correcte ?, Deal 'a et appartient à beaucoup' ou 'appartient à' Channel (s)? ?? – fdaines
et qu'en est-il des objectifs ?, un marché appartient à une cible? – fdaines