2011-06-20 29 views
0

爲主要產品的上市得到了表:排序方式均選擇結果從另一個表

| 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... 

它的產品列表非常棒,但現在我需要訂購產品平均得分表。

我看過很多排名榜的例子,但仍然無法構建任何可行的方法。

預先感謝 駱駝

回答

1

SELECT * FROM產物左加入(SELECT AVG(評分)avgscore,從通過的productid得分組的productid)S ON s.productid = product.productid爲了通過avgscore極限0,10

優化查詢的一種方式是將平均值存儲在產品表中並偶爾進行更新。

+0

你是男人!謝謝吉頓。我還有一個問題,在這個聲明中,我需要添加二階方法。評分表有時並沒有特定的產品,bcoz沒有產品評分,所以在這種情況下,我需要通過字段名稱命令產品,這在產品表 – Cameleon

+0

好,我只是做了它,它很容易作爲餡餅:), thx再Gidon。 – Cameleon

+0

是否可以綁定avgscore並在mysql> fetch中獲取結果,我正在談論你的選擇? – Cameleon

相關問題