1

このようなアイテムのテーブルがあるとしましょう

item_id
item_visits

過去 7 日間の訪問回数に基づいてこれらのアイテムを並べ替えるには、このテーブルに何を追加する必要がありますか。

そして、それをどのようにデータベースに問い合わせますか?

4

2 に答える 2

1

申し訳ありませんが、私は質問を誤解しました...もちろん、datetime型のVisitTimeという名前の列を追加する必要があります。

その後、クエリの作成に役立つ一連のビューを作成することをお勧めします。たとえば、DailyVisit という名前のビューには、すべてのアイテムの 1 日のビューの量 (日付で示されます) があります。

于 2011-10-02T02:23:21.970 に答える
1

あなたのテーブルは少し混乱しています。

アイテムの訪問数を追跡したくありません。
アイテムがいつ、誰によって、どこで、どのアイテムが訪問されたかを追跡したいだけです。

次のことをお勧めします。

table visit
------------
id integer not null primary key auto_increment
item_id integer not null foreign key fk_item_id
        references item(id) on delete cascade on update cascade
visitor_id integer not null foreign key fk_visitor_id
        references visitor(id) on delete cascade on update cascade
visit_date timestamp not null default current_timestamp
engine = InnoDB

これにより、アイテムごとの訪問を把握し、アイテムと訪問者に関する詳細を取得するために必要なすべての詳細が得られます。

-- select total number of visits per item for the last week.
SELECT 
  COUNT(*) as NrOfVisits
  , i.name as ItemName
FROM visit v
INNER JOIN item i ON (v.item_id = i.id)
WHERE v.visit_date BETWEEN now() AND DATE_SUB(now(), INTERVAL 7 DAY)
GROUP BY v.item_id WITH ROLLUP
于 2011-10-02T05:06:27.057 に答える