2015-07-03 96 views
0

我有这样如何计算mysql中同一列中的不同值?

id(pk)|product_id(fk)|serial(varchar)|status(varchar) 
    1 | 2   |  e098  | sold 
    2 | 2   |  e008  | faulty 

什么,我需要提取表:

array(faulty=>1,sold=>1) 

我,我可以用一个复杂的查询做,有没有什么简单的查询,可以帮助? 我试过这个: SELECT COUNT(id) as product_details.status FROM product_details WHERE product_id=2 GROUP BY status哪没有工作。

回答

0

要查询状态以及这样的。

SELECT status, COUNT(id) as count FROM product_details WHERE product_id=2 GROUP BY status 
+0

感谢哥们,那很有用 –

2

(AB)使用MySQL的自动铸字:

SELECT SUM(status='sold') AS sold, SUM(status='faulty') AS faulty 
FROM ... 

status='sold'布尔结果将被强制转换为整数0/1,然后总结出来的。

另一种选择就是做一个普通的查询,然后做在客户端代码枢:

SELECT id, status, COUNT(status) AS count 
FROM ... 
GROUP BY id, status 

然后

while(... fetch ...) { 
    $results[$row['id']][$row['status']] = $row['count']; 
} 
+0

这是有帮助的(: –

相关问题