Php 显示字段中的值总数

Php 显示字段中的值总数,php,select,field,Php,Select,Field,下午好。我在想,是否可以在表中显示所选字段的总和或总计,以及与日期的关系: 例如,我想知道我的酒店每个月的啤酒消费总量 这是我的服务表: [services_id[pk], customer_id[fk], date_in,date_out,room_type,room_number, extra_ref, extra_bed,extra_snack, extra_beer,extra_softdrinks, extra_pillows,extra_breakfast, extra_snack_

下午好。我在想,是否可以在表中显示所选字段的总和或总计,以及与日期的关系:

例如,我想知道我的酒店每个月的啤酒消费总量

这是我的服务表:

[services_id[pk],
customer_id[fk],
date_in,date_out,room_type,room_number,
extra_ref,
extra_bed,extra_snack,
extra_beer,extra_softdrinks,
extra_pillows,extra_breakfast,
extra_snack_q,
extra_beer_q,
extra_softdrinks_q,
extra_pillows_q,
extra_breakfast_q]
你能给我一些建议我怎样才能得到它吗。 提前感谢:

-伦茨

[额外信息]

此外,我认为组织此表的最佳方法是将此表拆分为其他几个表。将客户信息存储在第一个表中,例如

[customer_id, customer_name, date_in, date_out, room_type, room_number]. 
1, Bob, 20110101, 20110110, big, 200
2, Joe, 20110101, 20110110, small, 202
....
还有另一个名为room_items的表,它将包含以下内容:

[id, item_name]
1, BEER
2, BED
3, SNACK
...
然后是另一个名为room_purchases的表,它将包含以下内容:

[customer_id, purchase_id, amount, date....]
1, 1, 10, 20110101
2, 3, 5, 20110101
3, 1, 9, 20110101
....
这将帮助您在所有三个表上进行连接,并且它们将以这种方式更加规范化

SELECT SUM(t2.amount) as beer_amount
FROM customers as t1 
LEFT JOIN room_purchases as t2 ON t1.customer_id = t2.customer_id
WHERE t2.purchase_id = 1 AND t2.date BETWEEN 20110101 AND 20110131
这将返回如下内容:

02-2011 | 43
03-2011 | 52

如果您想根据日期限制查询,只需在
分组依据

之前添加一个
WHERE
约束,您的应用程序在哪个dbms上运行?(MySQL、SQL Server…)在MySQL Bro XAMMP中与您的问题不相关,但是您应该考虑规范化表:@ JNNP再次感谢我会对此做笔记。我在php上还是新手这里有约会和约会要处理,但不管怎样这是个主意:)@metro谢谢你的快速回复。我有一个关于你的密码的问题,我应该每月在我的桌子上加一杯啤酒吗?@renz对我来说,在这种情况下真正重要的是什么时候买啤酒以及买啤酒要花多少钱。谁买它并不重要。所以你不应该去约会,去约会。所以,是的,你需要检查一下每月或每天的啤酒量。我会更新我的查询,让它更清楚一点。是的,我明白,但问题是,我们不知道啤酒是什么时候买的。我们只是有一个日期输入和日期输出值,这家伙可以在第一天买两瓶啤酒,直到他离开。如果你在一条DB线上有两个月的时间,你无法知道啤酒是在第一个月还是第二个月购买的。这使得我们几乎不可能对它有正确的统计。但是我们可以很容易地知道啤酒是什么时候买的。只需创建另一个表,将这些值与客户分开。我真的不认为这些值中有很多应该与客户数据混合在一起。如果我创建这些表,我会按照johnP的建议更加规范化。当这家伙第一天买了两瓶啤酒,你就把那天他付的钱储存在另一张桌子上。
SELECT DATE_FORMAT(date_in,"%m-%Y") AS month,SUM(extra_beer) AS beers
FROM your_table
GROUP BY month
02-2011 | 43
03-2011 | 52