标题混淆? :)来自2个表的SQL连接,从第三个连接的数据分组
我试图从我的购物车数据库中生成有用的报告。
有一个表orders
包含“date_ordered”(和一堆其他的东西我不关心)和键“orders_id”
第二个表,orders_products
,具有相同的“orders_id”键并有关于命令的信息。特别是,我对“products_id”,“products_quantity”和“final_price”感兴趣
我想要做的是生成销售报表,显示数量*价格的总和,并在date_ordered为两个日期。我可以这样做:
SELECT op.products_id AS 'PID',
SUM(op.products_quantity) AS 'sales Q',
SUM(op.final_price * op.products_quantity) AS 'sales $'
FROM orders o
JOIN orders_products op
ON o.orders_id = op.orders_id
WHERE o.date_purchased
BETWEEN '2012-01-01' AND '2012-12-31'
GROUP BY op.products_id
这似乎工作正常。但是现在我“简单地”想要在显示产品名称的报告中添加另一列。该数据位于“products_name”列中的另一个表中,products_description
。所以,我想这一点:
SELECT pd.products_name AS 'Product',
op.products_id AS 'PID',
SUM(op.products_quantity) AS 'sales Q',
SUM(op.final_price * op.products_quantity) AS 'sales $'
FROM orders o
JOIN orders_products op
ON o.orders_id = op.orders_id
JOIN products_description pd
ON op.products_id = pd.products_id
WHERE o.date_purchased
BETWEEN '2012-01-01' and '2012-12-31'
GROUP BY op.products_id
,起初它似乎工作,直到我发现所有的销售Q和美元销售额的数字是他们应该是3倍的东西。
它超出了我的掌握能力:)帮助赞赏。
尝试在group by子句 –
中添加pd.products_name如果产品ID的数字乘以3,我猜这是因为products_description表包含相同产品ID的3行,不是吗? – Walid
@Nikita ......奇怪的是,这使服务器崩溃!大声笑。我尝试重新启动并重新执行,同样的事情......它冻结。 WEIRD – bcsteeve