アイテムで最も人気のあるアイテムを日付でグループ化し、このアイテムの名前とともにすべてのアイテムの合計を表示する必要があります。このようなことは1回のクエリで可能ですか?mySQLクエリ - 最も人気のあるアイテムを表示
注:ランダムに、または最初または最後のオカレンス(どちらか一番簡単なもの)を表示するだけで、それらがすべて同じ出現(挿入の最後の3行を参照)している場合。
これをSQLで実行できない場合は、結果を実行し、PHPを介してデータをソートする必要があります。これはかなり面倒なようです。
編集:申し訳ありませんが、私は '2009'08-04'の間違った合計を持っていました。それは私が必要なものの4
例のようになります。ここでは
+------------+---------------------+-------+ | date | item | total | +------------+---------------------+-------+ | 2009-08-02 | Apple | 5 | | 2009-08-03 | Pear | 2 | | 2009-08-04 | Peach | 4 | | 2009-08-05 | Apple | 1 | | 2009-08-06 | Apple | 3 | +------------+---------------------+-------+
は、たとえばテーブルです:
CREATE TABLE IF NOT EXISTS `test_popularity` ( `date` datetime NOT NULL, `item` varchar(256) NOT NULL, `item_id` int(11) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO `test_popularity` (`date`, `item`, `item_id`) VALUES ('2009-08-02 00:00:00', 'Apple', 1), ('2009-08-02 00:00:00', 'Pear', 3), ('2009-08-02 00:00:00', 'Apple', 1), ('2009-08-02 00:00:00', 'Apple', 1), ('2009-08-02 00:00:00', 'Pear', 0), ('2009-08-03 00:00:00', 'Pear', 3), ('2009-08-03 00:00:00', 'Peach', 2), ('2009-08-04 00:00:00', 'Apple', 1), ('2009-08-04 00:00:00', 'Peach', 2), ('2009-08-04 00:00:00', 'Peach', 2), ('2009-08-04 00:00:00', 'Pear', 3), ('2009-08-05 00:00:00', 'Apple', 1), ('2009-08-06 00:00:00', 'Apple', 1), ('2009-08-06 00:00:00', 'Peach', 2), ('2009-08-06 00:00:00', 'Pear', 3);
これは、各アイテムにどの日付を選択するか、またはこれが本当に重要であるかどうかを知らなければ、実際には正しく答えられません。 –
ハァッ?彼は各日付の中で最も人気のあるものを望んでいます。それは私が解釈する方法です:「最も人気のある出品を日付でグループ化する必要があります」 – hobodave
日付フィールドでグループ化する必要があります。その場合、各行はその日付の「要約」になります。 – kenitech