Помогите с подсчетом select count

seosniks
На сайте с 13.08.2007
Offline
389
493

Добрый день.

Есть 2 таблицы.

category и news

SELECT * FROM `category` ORDER BY `posi` ASC

news.news_cat = category.cat_id

cat_id =1 категория 1

cat_id =2 категория 2

Новость 1 news_cat=1

Новость 2 news_cat=1

Новость 3 news_cat=1 id 2

Новость 4 news_cat=1 id 2

Мне надо указать сколько в каждой категории новостей.

категория 1 (2)

категория 2 (2 )

и так далее.

вот код выводящий категории


if ($result = $mysqli->query('SELECT * FROM `category` ORDER BY `posi` ASC')) {
while( $row = $result->fetch_assoc() ){

$cat_id=$row['cat_id'];


$out .=$cat_title ($allnum)</td>";

}}

# $allnum это должно быть количество новостей в каждой категории

echo $out;

Подскажите как сделать выборку правильно.

Ато я что то не соображу.

[Удален]
#1

Используйте COUNT () с GROUP BY, чтобы сгруппировать их вместе по категориям.

пример: http://www.java2s.com/Code/SQL/Select-Clause/UseCOUNTGROUPandHAVING.htm


SELECT name, COUNT(name) FROM orders
GROUP BY name
HAVING COUNT(name) > 0;


---------- Добавлено 17.03.2015 в 15:17 ----------

Будет что-то вроде:


select category.id `category`, count( news.id ) `news count` from category, news where category.id = news.category_id group by category_id;
LovelAss
На сайте с 05.06.2009
Offline
96
#2


SELECT `t1`.*, COUNT(`t2`.`id`) AS `count`
FROM `category` AS `t1`
LEFT JOIN `news` AS `t2` ON `t1`.`cat_id` = `t2`.`news_cat`
GROUP BY `t1`.`cat_id`
ORDER BY `t1`.`posi` ASC
seosniks
На сайте с 13.08.2007
Offline
389
#3

Спасибо всем за помощь.

Оказывается ошибка у меня была в том, что

в цикле был $result

и в count тоже был $result

сделал так, заработало.

$rest = $mysqli->query(" SELECT COUNT( cat_price )

FROM list_price

WHERE cat_price =$cat_id");

$total= $rest->fetch_array(MYSQLI_NUM);

$all = intval($total[0]);

Теперь все пашет.

Запутался из за того что пробую работать с mysqli ООП

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий