2014-04-01 85 views
2

我在MySQL中有兩個表格:曲目和評分。我希望查詢算多少收視每個磁道有,這就是爲什麼我使用以下命令:MYSQL顯示不計數

SELECT t.*, COUNT(*) as ratings 
FROM tracks t, ratings r 
WHERE t.trackID = r.trackID 
GROUP BY t.trackID 
ORDER BY ratings DESC 

那麼我現在的問題是,當一個音軌沒有評級,但(這樣算爲0 )它不會顯示,但我也希望它顯示何時還沒有任何評級。我希望有一個人可以幫助我。提前致謝!史蒂芬。

+0

使用子查詢來計數 – Pitchinnate

+0

感謝您的快速回復,但我該怎麼做?對不起,我對Mysql非常陌生 –

+0

您是否比較了兩種查詢的執行計劃? –

回答

1

試試這個,希望你會發現它有幫助。

SELECT t.*, (select count(*) from ratings r where r.trackID = t.trackID) as ratingsCount from tracks t order by ratingsCount DESC; 
0

您必須使用LEFT JOIN來保留所有左側(即軌道)記錄。

SELECT t.*, COUNT(*) as ratings 
FROM tracks t 
    LEFT JOIN ratings r 
ON t.trackID = r.trackID 
GROUP BY t.trackID 
ORDER BY ratings DESC