2 votes

Mysql compte le nombre de rangées en fonction de la date

Je ne sais pas quel titre lui donner ni comment l'expliquer, mais je vais faire de mon mieux pour expliquer mon problème.

J'ai ce tableau composé de certaines données qui se concentrent sur date_participé y fblike_point .

enter image description here

Eh bien, mon résultat souhaité devrait être

2013-03-20 1

2013-03-19 3

Donc, en gros, chaque date comptera le nombre de fblike_point .

Le 2013-03-19, il a total de 3 fblike_point et le 2013-03-20 il a un total de 1 fblike_point

y mon problème c'est que je n'obtiens pas les résultats souhaités, j'obtiens un résultat de 2013-03-19 4

Il reste en 1 date et compte le nombre de fblike_point

Voici mon code pour cela.

$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>";
}

Des solutions pour ce genre de choses ? Toute aide serait appréciée :)

5voto

Lieven Keersmaekers Points 32396

Vous devez modifier votre requête pour utiliser un GROUP BY au lieu de la DISTINCT

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

La façon dont vous avez utilisé DISTINCT est d'obtenir toutes les dates uniques et, pour chaque résultat, d'ajouter le nombre d'enregistrements retournés dans le champ tout le site résultats.

Utilisation d'un GROUP BY vous permet d'utiliser n'importe quelle fonction d'agrégation disponible sur ce groupe .


Modifier

Comme mentionné par @ysth, au lieu d'utiliser COUNT vous pouvez utiliser SUM en fonction des valeurs possibles que fblike_point peut avoir.

Utilisation de SUM serait en fait le cours d'action le plus raisonnable.

1voto

Yogesh Suthar Points 19002

Utiliser la requête ci-dessous en supprimant DISTINCT et en remplaçant ORDER BY a 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";

1voto

alwaysLearn Points 6426

Remplacer

$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";

avec

$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";

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X