我有这张桌子
stk
+---------+--------------+
| Field | Type |
+---------+--------------+
| id | int(11) |
| name | varchar(255) |
| type_id | int(11) |
+---------+--------------+
stk_type
+-------+--------------+
| Field | Type |
+-------+--------------+
| id | int(11) |
| name | varchar(255) |
| price | int(11) |
+-------+--------------+
customer
+-------+--------------+
| Field | Type |
+-------+--------------+
| id | int(11) |
| fio | varchar(255) |
+-------+--------------+
and sales
+-------------+-----------+
| Field | Type |
+-------------+-----------+
| id | int(11) |
| customer_id | int(11) |
| stk_id | int(11) |
| date | timestamp |
+-------------+-----------+我需要选择上个月我得到了多少钱;我不知道如何在一个查询中选择它。
SELECT stk_id FROM sales
WHERE date >= DATE_SUB( CURDATE(), INTERVAL 1 MONTH )所以现在我有了上个月所有的stk ids,我需要计数sum,但是如果我有重复的键,我该怎么做呢?例如:
如果最后一次查询返回stk_id的1,1,1,2 ,3,3,如果stk_type中的价格等于next,我如何计算它的总和:
id 1 price 100
id 2 price 200
id 3 price 150因此,对于这个例子,我应该得到这个结果800;
我需要选择所有的stk_id,并以某种方式选择价格和总数。寻求帮助,谢谢。
发布于 2014-01-10 16:01:48
尝试这个sql查询
SELECT stk_id, SUM(price) FROM sales
LEFT JOIN stk ON stk_id = stk.id
LEFT JOIN stk_type ON type_id = stk_type.id
WHERE date >= DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
GROUP BY stk_id发布于 2014-01-10 15:59:12
SELECT sales.stk_id, sum(stk_type.price)
FROM sales LEFT JOIN stk_type ON (sales.stk_id=stk_type.id)
WHERE date >= DATE_SUB( CURDATE(), INTERVAL 1 MONTH )
GROUP BY sales.stk_id;我假设"sales.stk_id=stk_type.id“是它们之间的联系?
编辑:忘记where子句。
https://stackoverflow.com/questions/21048439
复制相似问题