Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从库存中获取可用设备的SQL语句_Mysql_Sql_Sql Server - Fatal编程技术网

Mysql 从库存中获取可用设备的SQL语句

Mysql 从库存中获取可用设备的SQL语句,mysql,sql,sql-server,Mysql,Sql,Sql Server,我有一个表设备,其中列有名称,说明,状态 这是显示所有行时我的表的外观: id name description status 1 shovel shiny shovel 1 2 shovel shiny shovel 1 3 shovel shiny shovel 0 4 hammer big hammer 1 5 hammer big hammer 0 这是我现在拥有的SQL语

我有一个表
设备
,其中列有
名称
说明
状态

这是显示所有行时我的表的外观:

id  name      description   status
1   shovel    shiny shovel     1
2   shovel    shiny shovel     1
3   shovel    shiny shovel     0
4   hammer    big hammer       1
5   hammer    big hammer       0
这是我现在拥有的SQL语句:

SELECT equipment.name, equipment.description, COUNT(*) AS stock 
FROM equipment 
GROUP BY equipment.name
它显示了以下内容:

name    description   stock
shovel  shiny shovel    3
hammer  big hammer      2
我想显示另一列,显示状态为1的设备数量

name    description   stock  available
shovel  shiny shovel    3       2
hammer  big hammer      2       1

您就快到了:只需对状态字段进行汇总,如下所示:

SELECT 
    equipment.name, 
    equipment.description, 
    COUNT(*) AS stock, 
    SUM(status) as available
FROM equipment 
GROUP BY 
    equipment.name,
    equipment.description

您就快到了:只需对状态字段进行汇总,如下所示:

SELECT 
    equipment.name, 
    equipment.description, 
    COUNT(*) AS stock, 
    SUM(status) as available
FROM equipment 
GROUP BY 
    equipment.name,
    equipment.description
这里的诀窍(在SQL Server和MySQL中适用)是使用条件
SUM()
而不是
COUNT()

如果
status
只能是
1
0
,则您可以将其相加:

    SELECT ..., SUM(status) as available
这里的诀窍(在SQL Server和MySQL中适用)是使用条件
SUM()
而不是
COUNT()

如果
status
只能是
1
0
,则您可以将其相加:

    SELECT ..., SUM(status) as available