Как посчитать количество записей в таблицах?

Я знаю, что есть запросы типа:

SELECT COUNT(*) FROM teble WHERE field = "U"

Но мне необходимо подсчитать общее количество записей в сорока таблицах. Можно конечно в цикле выполнить 40 запросов и результат сложить, но возможно есть более красивое решение?

2 ответа

Если надо посчитать количество значений тупо всех таблиц...

// .... подключение

$res = mysql_query('SHOW TABLES');
//выберем все таблицы нашей базу

while($row = mysql_fetch_row($res)) {
    //сложим подзапросы для подсчета всех табличек в массив
    $queryArray[] = '(SELECT COUNT(*) FROM ' . $row[0] . ')';
}

// сфоримруем наш запрос...
$countQuery = implode(' + ', $queryArray);

// AS total укажем для красивого результата в mysql_fetch_assoc
$query .= 'SELECT (' . $countQuery . ') AS total';

$res = mysql_query($query);
$res = mysql_fetch_assoc($res);

// на выходе - колличество записей всех таблиц произвольной БД 
echo $res['total'];

Кому надо будет без труда переделает сей код под подсчет определенных значений в 1ом запросе.. Вообще в реальной разработке я бы сделал вьюшку и не парился :)


select sum(cnt) as cnt 
from 
(SELECT count(*) as cnt FROM tab1 
UNION ALL 
SELECT count(*) as cnt FROM tab2 
UNION ALL 
SELECT count(*) as cnt FROM tab3
) as t

Держите)

licensed under cc by-sa 3.0 with attribution.