2014-02-07 2 views
2

Привет У меня есть эта ситуация:сосчитать все элементы в таблице MySQL и получить запись

$query = $db->query('SELECT COUNT(*),* FROM memberFileReports'); 

$data = $query->fetch(PDO::FETCH_ASSOC); 

print_r($data); 

его не работает? любая идея, почему и как подсчитывать и получать все предметы одновременно, и что, если я хочу подсчитать (*), а затем следующий выбор будет иметь лимит 0,5?

+1

SELECT COUNT (*) в общей сложности из таблицы, это правильный путь .. и вам не нужно использовать COUNT (*), * –

+0

Я думаю, что вы ищете 'SQL_CALC_FOUND_ROWS', это даст вам полные строки, даже если вы используете lim Это. – cmorrissey

+0

, если я использую Select Count (*), я получу ТОЛЬКО COUNT, но мне нужно получить граф и пропустить все строки одновременно в одном выражении SQl – user3284909

ответ

2

Это вы что искали?

SELECT * , CONCAT('', (SELECT COUNT(*) FROM memberFileReports)) AS total 
FROM memberFileReports LIMIT 0,5 

EDIT 1: Обратите внимание, что «общий» будет строка

EDIT 2: Как я понимаю, вы хотите, чтобы получить общее количество строк в таблице, но выбрать только 5 из них (как пример)

EDIT 3: шапки ... и орфографические ошибки

+0

im получить ошибку на этом – user3284909

+0

да Мне нужно получить общее количество очков на столе, но отображать только 5 из них – user3284909

+0

Это отлично работает для меня ... возможно, вы скопировали ошибку? :) Просто повторный тест .. – Minciu

2

Используйте этот

SELECT * , COUNT(*) FROM memberFileReports Group by column_id 

Вместо этого

SELECT COUNT(*),* FROM memberFileReports 

EDIT:

попробовать это

$data = $query->fetchAll(); 

вместо

$data = $query->fetch(PDO::FETCH_ASSOC); 
+0

С этим я получаю только одну строку? – user3284909

+0

@ user3284909 Задайте вопросы, имея '*' перед 'count (*) будет работать правильно, напротив будет – Durandal

+0

да :), вы приветствуете чувака :) –

0

Я знаю, что этот пост немного поздно, но я понял, я бы вам сказать, причина, почему вы получите только один ряд назад, потому что вы используете агрегированная функция «COUNT()». эта функция делает так, чтобы результат возвращался в одну строку. способ показать материал в более чем одной строке - использовать «GROUP BY» в вашем заявлении select, и он будет группировать данные по условию, о котором вы говорите.

пример ... Предположим, у нас был пример таблицы с 3-х пользователей ..

один имеет 10 взаимодействий

один 3

и один 33:

SELECT e.UserID, COUNT(e.interactions) as num_interactions FROM example e GROUP BY e.UserID;

который показывает количество взаимодействий, которые пользователь сделал в таблице фиктивных примеров.

ВЫВОД:

UserID  num_interactions 

1   3 

2   10 

3   33 

без GROUP BY агрегата бы сделать вывод выглядеть следующим образом:

UserID  num_interactions 

1   46 

просто на будущее :)

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