2

タイトルがどうあるべきか、どう説明すればよいかわかりませんが、私の問題を説明するために最善を尽くします。

このテーブルは、date_participatedfblike_pointに焦点を当てた特定のデータで構成されています。

ここに画像の説明を入力

まあ、私の望ましい出力は

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

このようなものに対する解決策はありますか? どんな助けでも大歓迎です。:)

4

3 に答える 3

5

GROUP BYの代わりにa を使用するようにクエリを変更する必要があります。DISTINCT

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

使用した方法DISTINCTは、すべての一意の日付を取得し、結果ごとに、結果セット全体で返されたレコードの量を追加することです。

を使用すると、その group でGROUP BY使用可能な集計関数を使用できます。


編集

@ysth で言及されているように、使用する代わりに、可能な値に応じてCOUNT使用することをお勧めします。SUMfblike_point

使用SUMすることは、実際にはより賢明な行動方針です。

于 2013-03-20T06:52:11.313 に答える
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";
于 2013-03-20T06:54:57.013 に答える