2011-06-28 15 views
1

私は、それぞれのビデオがカテゴリに入っているビデオウェブサイトを持っており、それぞれのカテゴリから最も視聴されたビデオを表示したいと考えています。このクエリは可能ですか?

ビデオのヒットは、各ヒットがUSER_IDを記録し、

をVIDEO_IDに苦しん一部イムは1人のユーザーが動画を10回見ている場合、それはまだ一つだけをカウントヒットをカウントしている自分自身のテーブルを持っていますヒット。

ありがとうございました。

答えて

2

あなたはそれがID 1826

EDITでビデオを見ているユーザーの合計数を与える必要があります。この

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

のようなものを意味するか:私はので、私は、MS SQLでこれをのみテストしています現時点では仕事中ですが、家に帰るとMySQLでチェックすることができますが、それは同じものと見なします。

0

ヒットテーブルの重複レコードの挿入を停止しているようですが、 select count(id)を実行できるように、これを行う必要があります。user_id = ?? and video_id = ??これにより、これら2つのパラメータがテーブル内で発生した回数が返されます。

+0

ユニークな結果を検索するのではなく、最初にテーブル内でユニークな結果しか持たないようにしてください。私は私の心の後ろにこれを持っていたが、そのルートを降りたくない..ありがとう。 – 472084

+0

私の考えは、ユーザーがビデオチェックを見て、以前に見たことがあるかどうかを確認するたびに新しい列を表示したり、新しい記録を作成しない場合はビューを増やしたりすることでした。 – stuartmclark

1

1人のユーザーがビデオを10回見ると、1ヒットだけがカウントされます。あなたは各カテゴリからトップのビデオを得ることの問題を解決してきたわけ

使用COUNT(DISTINCTのuser_id)

に苦しんで一部のイム...

していますか?それはSQLのはるかに複雑な問題です(the max-concat trick

+0

I **ソート残りは、それは私が言及しなかったいくつかの他のテーブルが含まれて**私が持っていると思う: - ヒットとして \t COUNT(DISTINCT views.user_id)、cat_nameとして \t \t categories.nameを、SELECT \t cat_urlとしてcategories.url、VIDEO_IDとして \t \t videos.id、タイトルとして \t videos.title、画像として \t videos.file_still、ニックネームなど \t \t users.username、 \t'categories' がvideos.category_id = categories.id で動画をJOIN FROM SERIES_URL \tとして\t series.url videos.user_id = users.id ONユーザーがvideos.id = views.video_id JOIN ONビューをJOIN JOINシリーズON videos.series_id =シリーズ。id GROUP BY categories.id ORDER BY categories.name、ヒットDESC LIMIT 6 – 472084

関連する問題