2012-07-10 41 views
1

我希望itll是合法發佈此,因爲我知道在這個題目其他類似的職位。但我不能讓其他解決方案工作,所以試圖發佈我自己的場景。在這個例子的其他例子中,我不太確定他們如何使用表名和行。是通過標點符號嗎?爲了通過計數從另一個表

SELECT bloggers.*, COUNT(post_id) AS post_count 
    FROM bloggers LEFT JOIN blogger_posts 
    ON bloggers.blogger_id = blogger_posts.blogger_id 
    GROUP BY bloggers.blogger_id 
    ORDER BY post_count 

我有一篇文章和一個統計表,每次讀取文章時都會獲取新記錄。我正在嘗試通過統計統計表中該文章ID的記錄數來進行排序。就像「按視圖分類」功能一樣。

我的2個表:

文章

id 

統計

pid <- same as article id 

綜觀其他例子即時通訊缺少左連接。只是不能將我的頭圍繞如何工作。我此刻的查詢看起來是這樣的: $查詢= 「SELECT *,COUNT(PID)AS欣賞到統計GROUP BY PID ORDER BY DESC意見」;

任何幫助,非常感謝!

+0

你應該加入 – Khaleel 2012-07-10 10:49:54

回答

3
SELECT article.*, COUNT(statistics.pid) AS views 
FROM article LEFT JOIN statistics ON article.id = statistics.pid 
GROUP BY article.id 
ORDER BY views DESC 

思路:

  • 合併兩個表使用連接
  • 如果一篇文章沒有統計,NULL填補,即使用左連接
  • COUNT只能算作非NULL值,所以由右表算給正確的結果爲零
  • GROUP BY獲得確切一個結果行的每一篇文章,即ŧ O數統計爲每篇文章分別
+0

非常感謝你的表!用我自己的結構看這個例子讓我更加了解。大起大落! =) – Havihavi 2012-07-10 11:41:47

+0

如果我想在這裏添加一個WHERE子句,它會去哪裏? – Havihavi 2012-07-10 12:02:16

+1

閱讀[文檔](http://dev.mysql.com/doc/refman/5.6/en/select.html)。 – MvG 2012-07-10 12:21:43

相關問題