2011-06-28 123 views
1

我有一個視頻網站,每個視頻都在一個類別中,我想顯示每個類別中觀看次數最多的視頻。這種查詢可能嗎?

的視頻點擊量有自己的表,其中每一創歷史記錄的USER_ID和VIDEO_ID

的部分IM與計數如果單個用戶觀看視頻,其中十次命中掙扎它仍然只計算一個擊中。

謝謝。

回答

2

你的意思是這樣

SELECT COUNT(DISTINCT(user_id)) 
FROM video_hits 
WHERE video_id = '1826' 

它應該給誰看過id爲視頻1826

編輯用戶總數:我只在MS SQL因爲我測試了這個目前在工作中 - 當我回家時,我可以在MySQL中查看它,但我認爲它是一樣的。

0

這聽起來像你停止命中表插入重複記錄?你應該這樣做,以便你可以執行一個select count(id),其中user_id = ??和video_id = ??。這將返回表中這兩個參數發生的次數。

+0

因此,我不應該搜索唯一的結果,而應該首先在表中找到唯一的結果。我有這個在我心中,但不想沿着這條路線走。謝謝。 – 472084

+0

不用擔心,我的想法要麼是我建議的,要麼在每次用戶觀看視頻檢查時查看是否曾經觀看過它,如果是這樣,如果不創建新記錄則增加視圖? – stuartmclark

1

如果單個用戶觀看視頻十次,它仍然只計算一次打擊。

使用COUNT(DISTINCT USER_ID)

的部分IM掙扎......

這是否意味着你已經解決了從每個類別獲得頂級的視頻的問題?這是SQL中更復雜的問題(the max-concat trick

+0

我** **想我有排序的其餘部分中,包括了一些其他表我沒有提到: - 選擇 \t COUNT(DISTINCT views.user_id)爲命中, \t \t categories.name爲cat_name, \t categories.url如cat_url, \t \t 作爲videos.id VIDEO_ID, \t videos.title標題, \t videos.file_still作爲圖像, \t \t 作爲users.username暱稱, \t \t series.url作爲SERIES_URL \t FROM'categories' JOIN視頻ON videos.category_id = categories.id JOIN用戶ON videos.user_id = users.id JOIN視圖ON videos.id = views.video_id JOIN系列ON videos.series_id =系列。編號 GROUP BY categories.id ORDER BY categories.name,hits DESC LIMIT 6 – 472084