Это может быть дубликат для this, но мой вопрос как-то усложнен. У меня есть таблица MySQL с этими полями:Комплекс SQL SELECT для вычисления рейтинга на одном столбце
ip | product_id | visits
, который показывает, сколько раз ip посетил продукт. В конце концов я хочу, чтобы создать массив PHP так:
product_rating_for_ip = array(
ip=>array(
product_id=>rating, product_id=>rating, ...
),
ip=>array(
product_id=>rating, product_id=>rating, ...
),
.
.
.
);
Оценка равно посещений для одного продукта от некоторого ф, деленной на MAX всех посещений продукции этой ф .for Например:
product_rating_for_ip = array(
"78.125.15.92"=>array(
1=>0.8,2=>0.2,3=>1.0
),
"163.56.75.112"=>array(
1=>0.1,2=>0.3,3=>0.5,8=>0.1,12=>1.0
),
.
.
.
);
То, что я сделал:
SELECT ip, id, visits, MAX(visits) FROM visit GROUP BY ip
У меня есть соображения производительности, и я хочу избежать запросов SQL в вложенных циклах. Я думаю, что указанный выше SQL-запрос неверен, поскольку он не показывает ожидаемые результаты в действии.
«оценка равно посещения для одного продукта от некоторого ф, деленного на MAX всех посещений продукта по этой ф» Похож, это 'SUM', а тх n 'MAX'. – mishik
Нет, это МАКС. продукт с максимальными посещениями является основой для сравнения и оценки других продуктов. продукт с максимальными посевами имеет рейтинг 1 из 1, а другие имеют более низкие рейтинги от 0 до 1 – Trix
И все же в вашем примере нет продукта имеет рейтинг 1. – mishik