Порядок выбора результатов по средней из другой таблицы - PullRequest
0 голосов
/ 21 июня 2011

Получил таблицу для основного списка товаров:

| id | name | content |
  1    bla     .....
  2    ble     .....
  3    blo     .....
  4    blu     .....

И стол для подсчета продуктов:

| id | productid | score |
  1        4         4
  2        2         3
  3        4         1
  4        3         1
  3        1         1
  3        2         2

Начал писать код для списка товаров, с классом paginate> smarty

$stmt = $mysqli->prepare("SELECT id,name,content FROM products LIMIT ?,?"))
$stmt->bind_param('ii', SmartyPaginate::getCurrentIndex('id'), SmartyPaginate::getLimit('id'));
$stmt->bind_result($id, $name, $content);
$stmt->execute();

$count = '0';

while ($stmt->fetch())
 {
$array['id'][]          = $id;
$array['name'][]        = $name;
$array['content'][] = $content;
$count++;
  }

rest code...

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

Я видел много примеров для ранжирования, но до сих пор не могу построить ничего, что будет работать.

Заранее спасибо Camel

1 Ответ

1 голос
/ 21 июня 2011

выберите * из продукта, оставленного в соединении (выберите среднее значение (оценка) avgscore, продукт из группы оценки по продукту) s на s.productid = product.productid порядок по пределу avgscore 0,10

Один из способов оптимизации запроса - сохранить среднее значение в таблице продукта и периодически обновлять его.

...