我正在Magento模块中创建一些自定义报告,我正在努力解决这个问题。我已经把SQL放在下面了,基本上,我希望这为“捐赠者”中的每一行返回一行。表。它基本上是获得具有特定属性的产品销售总价值。
SELECT b.entity_id AS 'Car ID', b.car_name AS 'Car Name', b.car_purchase_price AS 'Car Purchased For', SUM(s.price) AS 'Total Sales'
FROM sales_flat_order_item AS s
INNER JOIN catalog_product_entity_int AS c ON s.sku = c.entity_id
INNER JOIN bs_donor AS b ON c.value = b.entity_id
WHERE c.attribute_id = '971'
这样可行,但只返回1行,即使bs_donor表中大约有20行,它也会返回所有产品的总销售额,而不仅仅是具有该特定属性集的销售额。如果我将其添加到查询的末尾:
AND c.value = '50'
它获取了正确的数据,这正是我所需要的,但显然只是对于ID为' 50'的bs_donor行。或者我设置的任何东西。我假设内部联接中存在错误,并尝试使用嵌套的子查询,但只是迷路了。
我认为这可能是因为我从sales_flat_order_item而不是bs_donor获取数据,但我无法以任何其他方式运行。
非常感谢任何帮助。
答案 0 :(得分:0)
您可以反转联接的顺序,以便首先显示bs_donor
表。然后使用LEFT JOIN
代替INNER JOIN
,以确保bs_donor
中的每条记录都显示在结果集中。
SELECT b.entity_id AS 'Car ID',
SUM(s.price) AS 'Total Sales'
FROM bs_donor b
LEFT JOIN catalog_product_entity_int c
ON c.value = b.entity_id
LEFT JOIN sales_flat_order_item s
ON s.sku = c.entity_id
WHERE c.attribute_id = '971'
GROUP BY b.entity_id