从商店数据库获取每日数据摘要

时间:2014-01-24 15:11:07

标签: php mysql sql

我在标准商店中有以下表格:

id始终为主键,自动递增,ts始终为TIMESTAMP,更新为ON_UPDATE CURRENT_TIMESTAMP)

sales

id | total | tendered | flag | userID | ts
1     0.6      0.6       0       4      2013-11-21 08:12:23

Sales是父表,userID与进行销售的用户相关。 totaltendered都属于FLOAT类型。 flag的类型为VARCHAR,可以是Free Order

receipts

id | oID | pID | quantity | ts
1     1     26      1       2013-11-21 08:11:25

Receipts为每种独特类型的产品保留一条线。 oID是INT类型,与表id的{​​{1}}相关。 sales的类型为INT,与表pID的{​​{1}}相关。

id

products

products是数据库中每个产品的中心数据。这是火星酒吧的一条线。 id | name | price | cID | display | ts 1 Mars 0.6 3 1 2014-01-17 07:55:25 与表Products中的cID相关。

id

categories

categories是包含每个类别的所有数据的表格,可以包含与单行相关的多个产品。 id | name | display | ts 3 Snacks 1 2013-11-14 12:06:44 的类型为INT,并指示何时启用或禁用类别(1 ='true')

我的问题是,我想输出这样的信息:

Categories

我有以下SQL:

display

这似乎给了我正确的信息,但我并非100%肯定。如果有人能证实这是有效的,我将非常感激。但是当我想看到某一天时,我会得到不同寻常的数字:

**Snacks**
(name)  (quantity) (price) (total)
Fruit      3         50p     £1.50
Twix       1         60p     60p
Boost      1         60      60p

**Hot Drinks**
(name)          (quantity) (price) (total)
English Tea 15      60p      £9.00
Speciality Teas 2       60p      £1.20

function'select'只返回SQL表的数组)。问题是,我可以通过在PHP中循环并以这种方式添加它来轻松找到结果。但我知道这可能与SQL,我只是不知道为什么它不工作。有人可以帮忙吗?

编辑 SQL示例小提琴在这里:http://sqlfiddle.com/#!2/23af4虽然由于8000个字符的限制我无法完成超过半天的数据。

1 个答案:

答案 0 :(得分:2)

试试这个:

SELECT categories.name AS category, products.name AS name, 
receipts.quantity AS quantity, products.price AS price,
(receipts.quantity * products.price) AS total
FROM categories
JOIN products
ON categories.id = products.cID
JOIN receipts
ON receipts.pID = products.ID

WHERE DATE(receipts.ts) = CURDATE()
ORDER BY categories.name

SQLFiddle demo

关于日期限制,您可以使用BETWEEN ... AND ...来指定日期和时间。使用绝对日期和时间或相对于当前日期和时间,例如WHERE DATE(receipts.ts)BETWEEN concat(curdate()-5,'6:00:00 AM')和curdate()-4 < / p>