从下表中按类别检索库存余额

时间:2015-06-05 18:11:51

标签: php mysql mysqli

我有以下表结构

id  stock   category    created                 type    
11  10      4           2015-06-05 13:30:56     a
12  5       4           2015-06-05 13:31:30     s
14  12      6           2015-06-05 15:58:41     a
15  10      6           2015-06-05 15:59:07     s   
16  10      4           2015-06-05 16:00:18     a   
17  10      4           2015-06-05 16:00:52     a   
18  1       6           2015-06-05 16:01:23     a   
20  10      6           2015-06-05 16:51:48     a   
21  10      6           2015-06-05 17:00:23     s
22  10      4           2015-06-05 17:02:39     s   
23  45      7           2015-06-05 20:48:31     a   
  

键入' a'是为了增加股票   输入' s'待售

我正在执行以下查询以获取库存余额,但我需要获取每个类别的余额。

这是我到目前为止尝试的查询:

SELECT (
    select SUM(stock)
    from stock
    where type='a'
) - (
    select SUM(stock)
    from stock
    where type='s'
) as balance

2 个答案:

答案 0 :(得分:3)

我认为你可以试试(未经测试)

select category
, sum(if(type='a', stock, 0)) - sum(if(type='s', stock, 0)) as balance
from stock
group by category

编辑:

我刚测试过它并且有效

答案 1 :(得分:0)

如果您使用的是PHP,则可以使用此

SELECT SUM(stock) FROM stock WHERE type= 'a' AND category = 4 

将结果放在$ var1

SELECT SUM(stock) FROM stock WHERE type= 'b' AND category = 4

将结果放在$ var2中,然后执行

$var = $var1 - $var2

您可以循环SQL调用并设置所需的类别编号。

还有更多的解决方案,但是因为我不知道您之前使用的代码,如果您将结果放在这里,这是我能做的最好的。