MySQL Count

ShVad

JSmart CMS
MySQL Count

Здравствуйте

Вот запрос:
PHP:
$mysql_query = "SELECT p.*, t.* FROM " . PREFIX . "_forum_posts AS p LEFT JOIN " . PREFIX . "_forum_topics AS t ON t.tid = p.topic_id
											WHERE p.post_text REGEXP ('$search_list') ".$fid_q."and p.hidden = 0 GROUP BY t.tid";
Мне надо найти count, делаю такой запрос:
PHP:
$count_query = "SELECT COUNT(t.tid) as count, p.*, t.* FROM " . PREFIX . "_forum_posts AS p LEFT JOIN " . PREFIX . "_forum_topics AS t ON t.tid = p.topic_id
											WHERE p.post_text REGEXP ('$search_list') ".$fid_q."and p.hidden = 0 GROUP BY t.tid";
НО найдено 2 строки, а count = 1

Как можно искать count для таких запросов?
 

Gas

может по одной?
нужно:
1. знать что count не считает NULL'ы;
2. чем отличается left join от inner join
 

ShVad

JSmart CMS
NULL'ов нет, находит две темы по поисковому запросу.

Менял на inner join результат тоже
 

Gas

может по одной?
а, это я проглядел что в запросе группировка есть - считается count для каждой группы.
чем не подходит вызвать count в php для получения строк в результате?
 

ShVad

JSmart CMS
Не полный запрос написал, есть еще LIMIT

PHP:
$result_topics = $db->query("" . $mysql_query . " LIMIT ".$cstart.",".$forum_config['topic_inpage']."");
 

Gas

может по одной?
или используя SQL_CALC_FOUND_ROWS, или отдельным запросом, который считает count.
 

ShVad

JSmart CMS
Отдельный запрос без лимита count = 1, а выводит 2 найденные темы.

Как сюда SQL_CALC_FOUND_ROWS приделать?

WHERE есть в запросе
 

x-yuri

Новичок
ShVad чем не подходит вызвать count в php для получения строк в результате?
 

Gas

может по одной?
x-yuri
не, тут не подходит, все записи-то не показываются, это для постраничной разбивки наверное.

ShVad
можно например, так:
select count(*) from (select t.tid from ..дальше твой запрос..) as t;
но имхо, тут будет лучше SQL_CALC_FOUND_ROWS. Найди в гугле пример.
 

ShVad

JSmart CMS
SQL_CALC_FOUND_ROWS да

Но

Тут еще надо: SELECT p.*, t.* FROM

Тогда так?: SELECT SQL_CALC_FOUND_ROWS , p.*, t.* FROM
 
Сверху