SQL, вам нужно что-то вроде:
SELECT category_name, COUNT(*) AS total FROM category_table
GROUP BY category_name
Это возвращает результирующий набор, который имеет одну строку для каждой категории. Каждая строка имеет два столбца: название категории и общее количество записей с этим названием категории. Тот же метод работает для идентификатора категории или любого другого ключа, который вы, возможно, захотите использовать.
Вы могли бы использовать его таким образом:
$sql = 'SELECT category_name, COUNT(*) AS total FROM category_table '.
'GROUP BY category_name';
$db = new PDO($database, $user, $password);
$results = $db->query($sql)->fetchAll(PDO::FETCH_ASSOC);
// $results is now an array with the query results
Edit: добавлен пример кода PHP.
+1: Просто не забывайте, что если вы добавляете другие столбцы, они также должны быть добавлены в предложение GROUP BY. – Powerlord
Действительно. Больше столбцов необходимо добавить либо в предложение GROUP BY (что означает, что для каждой категории будет возвращено более одной строки), либо обрабатывается с помощью агрегатной функции, такой как COUNT, MAX, AVERAGE и т. Д. – Jon
Большое спасибо. Я должен администратор, что по какой-то причине массивы никогда не были моей сильной стороной. Я работаю с тремя категориями: «Огонь», «EMS» и «Специальность». Ваш вышеприведенный пример прекрасно работает, пока я использую $ results [0] ['total'], $ results [1] ['total'] и т. Д. Как бы я мог использовать $ results ['Fire'] ['total '] или что-то подобное вместо этого? Спасибо :) – NightMICU