2014-01-09 53 views
0

我不明白爲什麼這個查詢不起作用。它只返回1個結果,但應該返回21個結果。總是有一個產品可以從數據庫中獲取,但並不總是一個審查。左外連接只返回一個結果

SELECT p.product_id, p.product_name, p.product_pic, AVG(r.review_stars) 
FROM products as p 
LEFT OUTER JOIN reviews as r ON p.product_id = r.review_product 
ORDER BY p.product_clicks DESC 
LIMIT 21 
+1

你應該張貼的樣本數據,並且展示你聲稱正在發生,或者結果表結構更好,但對於SO社區使用創建sqlfiddle舉個例子。 –

+0

是的平均不總是有一個有效的結果,但我認爲多數民衆贊成在一個外部聯接點? – Katp00ps

+0

您是否爲此帖添加了限制21;否則你真的應該刪除它。 –

回答

4

那是因爲在沒有GROUP BY子句的聚合函數總是回報唯一行。

您的查詢應該是這個樣子

SELECT p.product_id, p.product_name, p.product_pic, AVG(r.review_stars) avg_stars 
    FROM products as p LEFT OUTER JOIN reviews as r 
    ON p.product_id = r.review_product 
GROUP BY p.product_id 
ORDER BY p.product_clicks DESC 
LIMIT 21 
+0

好點!我忘了那個。 –

+0

就是這樣!非常感謝你。現在工作完美無瑕。 – Katp00ps