我有一个产品表,其中包含varchar,varchar和decimal类型的产品,类别和成本字段。
然后我有一个销售表,其字段为客户端,产品名称,数量,成本和saledate,类型为varchar,varchar,int,decimal和date。
我还有一个购买表,包括购买的字段,成本,数量和购买,类型为date,decimal,varchar和varchar。
在我的销售表中,给定记录的成本字段会自动乘以数量。
例如,如果啤酒成本为10,并且在销售啤酒数量的记录为2时,该记录的成本将自动为20。
我想要做的是,返回结果所有销售和购买自动分组。
例如,如果我在sales表中有以下数据:
productname - quantity - cost- saledate
beer 2 20 2010-07-10
beer 3 50 2010-07-11
And in the purchases table:
purchasedate - cost - quantity - purchase
2010-07-09 20 2 straws
我想显示以下输出
当月的总销售额:
productname - quantity - cost
beer 5 50
当月的购买总额
purchasedate - cost - quantity - purchase
2010-07-09 20 2 straws
我正在尝试以下内容:
Select category,SUM(Sales.Quantity),SUM(Sales.Quantity*cost) cost from
sales,products WHERE sales.product=products.name
AND category='food' AND month(date_field) = month(getdate()) group by category
然而,这首先不起作用,其次我认为它再次使销售表中的成本字段倍增,使其不准确。
我是否必须在产品表中包含原始成本才能满足我的需求?
我是否可以在一个查询中执行我想要的操作,可能作为联合,按照我的示例返回相应的行和列?
答案 0 :(得分:0)
如果我说得对,那应该是
当月的总销售额:
SELECT s.productname, SUM(s.quantity), SUM(s.cost)
FROM sales AS s
LEFT JOIN products AS p ON s.productname = p.name
WHERE MONTH(s.saledate) = MONTH(NOW()) AND p.category = 'food'
GROUP BY s.productname
但我没有看到与购买表的连接