使用连接和分组方式的MySQL查询
我正在构建一个MySQL查询,但似乎无法正确地进行 我有四张桌子:使用连接和分组方式的MySQL查询,mysql,join,group-by,Mysql,Join,Group By,我正在构建一个MySQL查询,但似乎无法正确地进行 我有四张桌子: -客户 -订单 -销售价格 -购买价格 客户和订单之间存在1:n关系“customernr”。 订单和销售价格之间存在1:n关系“ordernr”。 订单和采购价格之间存在1:n关系“ordernr” 我想做的是生成所有客户的输出,以及他们的总购买和销售金额 到目前为止,我有以下疑问 SELECT c.customernr, c.customer_name, SUM(sr.sales_price) AS sales_price,
-客户
-订单
-销售价格
-购买价格 客户和订单之间存在1:n关系“customernr”。
订单和销售价格之间存在1:n关系“ordernr”。 订单和采购价格之间存在1:n关系“ordernr” 我想做的是生成所有客户的输出,以及他们的总购买和销售金额 到目前为止,我有以下疑问
SELECT c.customernr, c.customer_name, SUM(sr.sales_price) AS sales_price, SUM(pr.purchase_price) AS purchase_price
FROM orders o, customers c, sales_rates sr, purchase_rates pr
WHERE o.customernr = c.customernr
AND o.ordernr = sr.ordernr
AND o.ordernr = pr.ordernr
GROUP BY c.customer_name
销售价格和购买价格的结果太高了。我似乎在重复计算。我做错了什么?是否可以在单个查询中执行此操作
谢谢你的回复 看起来您并不是在按客户分组。C.customerid或类似的东西。问题似乎是,当您将orders表与包含销售率和购买率的表联接时,您将得到后两个表的笛卡尔积。即,这两个表中的每一行对另一个表中的每个对应行重复一次。以下查询应通过将每个订单的费率相加,然后再将销售费率和采购费率加入其他表来解决此问题:
SELECT c.customernr, c.customer_name,
SUM(sr.sales_price) AS sales_price,
SUM(pr.purchase_price) AS purchase_price
FROM customers c
INNER JOIN orders o
ON o.customernr = c.customernr
LEFT JOIN (SELECT ordernr, SUM sales_price) AS sales_price
FROM sales_rates
GROUP BY ordernr) sr
ON sr.ordernr = o.ordernr
LEFT JOIN (SELECT ordernr, SUM(purchase_price) AS purchase_price
FROM purchase_rates
GROUP BY ordernr) pr
ON pr.ordernr = o.ordernr
GROUP BY c.customernr, c.customer_name;
GROUP BY k.bedrijfsnaam
-表“k”在哪里声明?对不起,我忘了将GROUP BY语句从荷兰语翻译成英语。塔克斯。