2015-07-03 2 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

(аb) Использование 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

Это было полезно (: –

Смежные вопросы