2013-03-20 3 views
2

Ну, я не знаю, каким должно быть название, и как я могу это объяснить, но я сделаю все возможное, чтобы объяснить свою проблему.Mysql Count number of Rows В зависимости от даты

У меня есть эта таблица состоит из определенных данных, которая фокусируется на date_participated и fblike_point.

enter image description here

Ну, мой желаемый результат должен быть

2013-03-20 1

2013-03-19 3

Так в основном , каждый день будет подсчитайте число fblike_point.

На 2013-03-19 он имеет общей сложности 3 fblike_point и 2013-03-20 имеет общей сложности 1 fblike_point

и моя проблема есть, я не выводящий мои желаемые результаты, я получаю результат 2013-03-19 4

Он остается в 1 день и подсчитывает количество fblike_point

Вот мой код, который ,

$query = "SELECT DISTINCT date_participated, COUNT(fblike_point) as fblike FROM event_raffles WHERE ticket_id='". $ticket_id ."' AND event_table='". $event_table ."' AND status='1' ORDER BY date_participated DESC"; 
$result = db_query($query); 

foreach ($result as $values) { 
    echo $values->date_participated . " " . $values->fblike . "<br>"; 
} 

Любые решения для этого материала? Любая помощь будет оценена по достоинству. :)

+0

где GROUP BY? –

+0

использовать функцию 'mysql_num_rows()' для подсчета количества строк –

ответ

5

Вы должны изменить ваш запрос, чтобы использовать GROUP BY вместо DISTINCT

SELECT date_participated, COUNT(fblike_point) as fblike 
FROM event_raffles 
GROUP BY date_participated 

Путь вы использовали DISTINCT, чтобы получить все уникальные даты и для каждого результата, добавить количество возвращаемых записей в всего resultset.

Использование GROUP BY позволяет использовать любую имеющуюся функцию агрегации в этой группе.


Редактировать

Как было упомянуто @ysth, вместо того, чтобы использовать COUNT вы можете захотеть использовать SUM в зависимости от возможных значений, которые могут иметь fblike_point.

Использование SUM на самом деле было бы более разумным способом.

+1

или, возможно, SUM (fblike_point), в зависимости от других значений, которые могут иметь 1, и что должно приводить к этим случаям. – ysth

+0

@ysth - Вы правы, спасибо. Я отредактировал ответ, чтобы добавить * предупреждение *. –

+2

err, если fblike_point имеет значение NULL или 1, оба возвратятся одинаково; если он равен 0, эта строка не будет подсчитываться суммой, а будет подсчитываться по счету – ysth

1

использование ниже запроса путем удаления и замены DISTINCTORDER BY к GROUP BY

$query = "SELECT date_participated, COUNT(fblike_point) as fblike FROM event_raffles WHERE ticket_id='". $ticket_id ."' AND event_table='". $event_table ."' 
AND status='1' GROUP BY date_participated DESC"; 
1

Заменить

$query = "SELECT DISTINCT date_participated, COUNT(fblike_point) as fblike FROM event_raffles WHERE ticket_id='". $ticket_id ."' AND event_table='". $event_table ."' AND status='1' ORDER BY date_participated DESC"; 

с

$query = "SELECT date_participated, COUNT(fblike_point) as fblike FROM event_raffles WHERE ticket_id='". $ticket_id ."' AND event_table='". $event_table ."' AND status='1' GROUP BY date_participated ORDER BY date_participated DESC"; 
+0

Вам необходимо использовать группу здесь – alwaysLearn