Как подсчитать из базы значения каждого столбика?

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

Добрый вечер господа.

Подскажите пожалуйста, как одним запросом вынуть 2 столбика и сделать подсчет каждого?

Пример

$q="SELECT count(*) FROM news";

$res=mysql_query($q);

$row=mysql_fetch_row($res);

$total_news=$row[0];

я получил количество новостей.

Но у меня есть поле power int(2) значений всего два, это 0 и 1

Так вот мне надо подсчитать еще и сколько нулей в ячейке power .

Спасибо.

дани мапов
На сайте с 06.09.2012
Offline
204
#1


$q="SELECT COUNT(*) AS total_news,
(SELECT COUNT(*) FROM news WHERE power = 0) AS power_news
FROM news";

$res=mysql_query($q);
$row=mysql_fetch_row($res);
$total_news=$row['total_news'];
$power_news=$row['power_news'];
Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
edogs software
На сайте с 15.12.2005
Offline
775
#2

дани мапов, шутите? А для 20 полей будете делать 20 подзапросов?

seosniks,

Один из методов "влоб"

select count(*) as totalnews, sum(if(power=1,1,0)) as power1, sum(if(power=0,1,0)) as power0 from news

Для Вашего случая с 1 и 0 можно даже проще

select count(*) as power1and0, sum(power) as power1 from news

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
дани мапов
На сайте с 06.09.2012
Offline
204
#3

А что вас не устраивает? Я дал читабельный рабочий запрос. У вас же даже названия таблицы неправильно прописано. Не говоря уже о том, что ТС нужна не сумма значений)), а количество записей, где нули.

seosniks
На сайте с 13.08.2007
Offline
389
#4

Вот глядите это одно и тоже

но разные ячейки.

Просто надо взять одним запросом.

$q="SELECT count(*) FROM news where id";

$res=mysql_query($q);

$row=mysql_fetch_row($res);

$total_news=$row[0];

$q="SELECT count(*) FROM news where power";

$res=mysql_query($q);

$row=mysql_fetch_row($res);

$total_power=$row[0];

---------- Добавлено 25.12.2012 в 23:42 ----------

дани мапов:
А что вас не устраивает? Я дал читабельный рабочий запрос. У вас же даже названия таблицы неправильно прописано. Не говоря уже о том, что ТС нужна не сумма значений)), а количество записей, где нули.

Вы все верно говорите, но у меня там 2 ячекйи в одной будет подсчет всего новостей.

В другой только не активированных новостей, тоесть на модерации.

И если 0 то модерация если 1 то активировано, мне для статистики надо.

P.S

что то не хочет работать, мож что не так делаю?

В сети порылся но там везде из двух таблиц выборка идет.

---------- Добавлено 25.12.2012 в 23:44 ----------

И еще сразу вопросик, зачем добавляют сокращенные имена псевдонимы?

SELECT [DISTINCT|ALL] *|<имена столбцов>

[AS <новые имена>] FROM <имена таблиц> [<псевдонимы>] [<условие внешнего объединения таблиц>] [WHERE <предикат> [AND <условие внутреннего объединения таблиц>]]

[GROUP BY [ROLLUP|CUBE|GROUPING SET(<список столбцов>)]|<список столбцов> [HAVING <предикат>]]

[ORDER BY <список имен|номеров столбцов> [COLLATE <список сопоставления>][ASC|DESC]]

дани мапов
На сайте с 06.09.2012
Offline
204
#5

Это 100% рабочий запрос, взял с stackoverflow.com, и часто меня выручает. Смотрите внимательней, наверно что-то не дописали здесь, потому что во втором примере различаются условия.

seosniks
На сайте с 13.08.2007
Offline
389
#6
дани мапов:
Это 100% рабочий запрос, взял с stackoverflow.com, и часто меня выручает. Смотрите внимательней, наверно что-то не дописали здесь, потому что во втором примере различаются условия.

Спасибо Вам, действительно у меня переменная вывода была другой.

Все шепчет.

Если не трудно подскажите пожалуйста

total_news это временная переменная?

power_news

Или чертой _ их можно связывать? Типа как news.power

Просто я все забыл наиг, 2 года не работал с базами )))

дани мапов
На сайте с 06.09.2012
Offline
204
#7

Это псевдонимы, их использовать необязательно, также можно дать другие названия. Можно использовать, например в ORDER BY и HAVING.

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