【发布时间】:2013-08-24 05:57:43
【问题描述】:
我有两个独立的 csv 表,其中包含可以通过另一个网页添加的自动数据。这不是静态数据,它是动态的和可变的。
这是我的目标:
- 编写一个网页,显示每个产品一年的销售额(数量和价格)表。用户必须能够选择年份。
到目前为止,我的查询已经到此为止了:
SELECT Products.Name, SUM(MonthlySales.SalesVolume) as 'Total Sales'
FROM Products
INNER JOIN MonthlySales
ON Products.Id=MonthlySales.Id
GROUP BY Products.Name;
最重要的是,我需要能够使用 php(我有能力)传入一个值(年份)以进一步缩小搜索范围。我这样做是否正确?
示例数据:
MonthlySales.csv
Id ProductCode Month Year SalesVolume
23041 121 1 1980 983
23042 121 2 1980 960
23043 121 3 1980 939
23044 121 4 1980 927
23045 121 5 1980 931
23046 121 6 1980 950
23047 121 7 1980 975
Products.csv
Id,Name,Price
121,Jelly beans,6.79
122,Banana milkshake powder,8.31
123,Edam Cheese,18.73
124,Hairnet,8.05
125,Aubergine jam,2.66
到最后我需要显示这样的东西:
您选择的年份:1980
Name Price Volume
Jelly Beans 6.79 11000
Banana milkshake powder 8.31 15000
任何帮助将不胜感激。
【问题讨论】:
-
您应该使用
GROUP BY Products.ID而不是Products.Name。除此之外它看起来还不错。我认为这可能应该在CodeReview 上。 -
您好,感谢您的回复,我已经尝试过了,但收到错误消息:Msg 8120, Level 16, State 1, Line 1 Column 'Products.Name' 在选择列表中无效,因为它是不包含在聚合函数或 GROUP BY 子句中。
-
我的脑袋放屁。对不起。我现在明白了。
-
ON Products.Id=MonthlySales.Id看起来非常错误。也许应该是ON Products.Id=MonthlySales.ProductCode
标签: sql sum inner-join