Как вы получаете самые популярные предметы на основе посещений?

Допустим, у нас есть таблица для предметов, которая выглядит следующим образом

item_id
item_visits

Что мы должны добавить в эту таблицу, чтобы иметь возможность сортировать эти элементы по количеству посещений за последние 7 дней.

И как мы можем запросить это в БД?

2 ответа

Решение

Извините, я неправильно понял вопрос... Ну, конечно, вам нужно добавить столбец с именем VisitTime, который имеет тип datetime.

После этого я бы предложил создать набор представлений, чтобы помочь вам сделать запрос. Например, представление с именем DailyVisit, которое имеет количество просмотров в день (обозначается датой) для каждого элемента.

Ваш стол немного запутался.

Вы не хотите отслеживать количество посещений товара.
Вы просто хотите отслеживать, когда какой-либо предмет был посещен и, возможно, кем и где и какой предмет.

Я бы предложил следующее:

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
Другие вопросы по тегам