0

これが以前に尋ねられた場合は申し訳ありません..私は開発に非常に慣れていないため、多くの検索を試みましたが、何を探すべきか本当にわかりません.

とにかく、1日に入力されるレコードをカウントするテーブルがあります。次のようになります (各レコードは文字で表されます) (今日の日付が 2013 年 1 月 27 日であると仮定します)。

RECORD | COUNT | DATE 
------A-----|-----4-----|27/01/2013  
------B-----|-----7-----|27/01/2013
------B-----|-----3-----|24/01/2013
------C-----|-----8-----|22/01/2013 
------A-----|-----2-----|19/01/2013   

新しい投稿はそれぞれテーブルでチェックされ、現在の日にレコードが既に存在する場合はカウントが更新され、そうでない場合は新しいレコードが作成されます。

「TODAY」に追加されたレコードを印刷するページには、MySQL クエリがあります。

SELECT * FROM `table` ORDER BY `date` DESC, `count` DESC LIMIT 1000

php 'if' ステートメントを使用して、日付 ​​('Ymd') =dateテーブル内のレコードのみを出力します。そのため、その日に入力されたレコードと対応するカウントのみが印刷されます。- 上記の表は次の結果を生成します。

1. B 7 
2. A 4

私が欲しいのは、先週入力された記録を印刷するページです。DATE_SUB(now(),INTERVAL 1 WEEK) AND NOW()を使用して先週のレコードを印刷できることはわかっていますが、レコードを複製して結合し、カウントを合計する必要があるため、このテーブルの結果は次のようになります。

1. B 10
2. C 8 
3. A 4

これらの重複レコードを結合して、レコードのリストをカウント順に並べるにはどうすればよいですか? これは「先週」のレコード数を取得するための最良の方法ですか、それともより良い別のテーブル構造がありますか?

繰り返しますが、これがばかげた質問であるか、私の説明が長々としたものであった場合は申し訳ありませんが、いくつかの簡単な指針をいただければ幸いです。

4

2 に答える 2

0

を使用GROUP BYすると、関連するレコードをグループ化できます

SELECT `record`
     , SUM(`count`) AS `count`
FROM `table` 
WHERE `date` > `date` - INTERVAL 1 WEEK
GROUP BY `record`
ORDER BY `count` DESC 
LIMIT 1000
于 2013-02-02T16:03:29.167 に答える
0

これを試して

SELECT `record`, SUM(`count`) AS `count` 
  FROM `table` 
 WHERE `date` > DATE_SUB(CURDATE(),INTERVAL 1 WEEK)
 GROUP BY `record`
 ORDER BY `count` DESC 

また、LIMIT 1000必要に応じて結果セットをグループ化できます

于 2013-02-02T16:04:07.760 に答える