2010-05-12 2 views
0

Нужно подсчитать количество строк для каждой категории в таблице MySQL с использованием PDO. Например, мне нужно иметь количество записей для категории 1, категории 2 и т. Д. Если возможно, я хотел бы сделать это, не выписывая инструкцию SQL для каждой категории.Подсчет количества строк в таблице MySQL с использованием PDO

Спасибо!

ответ

5

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.

+0

+1: Просто не забывайте, что если вы добавляете другие столбцы, они также должны быть добавлены в предложение GROUP BY. – Powerlord

+0

Действительно. Больше столбцов необходимо добавить либо в предложение GROUP BY (что означает, что для каждой категории будет возвращено более одной строки), либо обрабатывается с помощью агрегатной функции, такой как COUNT, MAX, AVERAGE и т. Д. – Jon

+0

Большое спасибо. Я должен администратор, что по какой-то причине массивы никогда не были моей сильной стороной. Я работаю с тремя категориями: «Огонь», «EMS» и «Специальность». Ваш вышеприведенный пример прекрасно работает, пока я использую $ results [0] ['total'], $ results [1] ['total'] и т. Д. Как бы я мог использовать $ results ['Fire'] ['total '] или что-то подобное вместо этого? Спасибо :) – NightMICU

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