2016-10-28 53 views
0

我有這個架構計數()不計算流派

名單表

ID | movie_id(fk)| USER_ID

電影TABLE

ID(PK)| genre1 | genre2

,所以我想在一個用戶列表 最reacurrence流派,我想

SELECT lists.movie_id, movies.genre1, count(movies.genre1) as counting, movies.id 
     FROM movies 
     LEFT JOIN lists ON (movies.id = lists.movie_id) 
     group by lists.movie_id, movies.genre1, movies.id 

這個SQL查詢返回

[ { 「movie_id」:100, 「genre1」: 「犯罪」, 「計數」:1, 「ID」:100},{ 「movie_id」:141267 「genre1」: 「犯罪」, 「計數」:1, 「ID」:141267},{ 「movie_id」:207932 「genre1」: 「犯罪」, 「計數」:1, 「ID」:207932},{ 「movie_id」:238636 「genre1」: 「驚悚」, 「計數」:1,「ID 「:238636} ]

雖然犯罪類型是在一次計一次在數組中目前的3倍,它應該是「計數」:3犯罪 我做了什麼錯?

+1

請發送表腳本和任何虛擬數據插入腳本。 –

+0

請註冊標籤數據庫 – NzGuy

+0

我穆罕默德!我希望這可以幫助你http://stackoverflow.com/questions/1221559/count-vs-count1?rq=1最好的問候 – user7084492

回答

2

這應該工作,你是不是user_ID的分組都:

SELECT lists.user_id, movies.genre1, count(movies.genre1) as counting 
    FROM movies 
    LEFT JOIN lists ON movies.id = lists.movie_id 
    group by lists.user_id, movies.genre1 
2

它這樣做,因爲你的一切分組。如果您只是「movies.genre1」組你必須: 犯罪3 驚悚1

你在你的問題,你要每個用戶每個類型的列表,但我沒有看到你實際使用的用戶提到的柱?

+0

耶爲了簡潔起見,我省略了用戶的部分 –