1

私は、ビデオの提出物が送られ、人々がそれらに投票するコンテストを設定しました。提出物はsubmissions、次の構造のテーブルに送信されます。

submission_id, title, videoname

投票テーブルのvotes構造は次のとおりです。

video_id, voter_id

video_idは、submissionsテーブルのsubmission_idと相関関係があります。

次のように、各動画の投票数を取得したいと思います。

select video_id, count(1) from votes group by submission_id

ただし、各ビデオのタイトルも表示したいので、結果は次のようになります。

video_id, count, title

私はsqlnoobなので、これが単純なステートメントである場合はご容赦ください。私はいくつかの調査を行いましたが、自分で何かを思いつくことができませんでした。助けていただければ幸いです。

4

4 に答える 4

2

...のLEFT JOIN代わりに、そしての代わりに行うことをお勧めします。このようにして、現在0票の提出物を返すことができます。INNER JOINCOUNT(v.video_id)COUNT(*)

select
  s.submission_id as video_id,
  count(v.video_id) as vote_count,
  s.title
from
  submissions s
  left join votes v on v.video_id = s.submission_id
group by 
  s.submission_id, 
  s.title
于 2013-03-15T18:23:35.287 に答える
0
select s.submission_id, s.title, s.videoname, c.cnt
from
submissions s,
(select video_id, count(1) as cnt from votes group by video_id) c
where
s.submission_id = c.video_id
于 2013-03-15T18:23:54.870 に答える
0

これにより、投稿テーブルからすべての動画が返され、投票テーブルに投票数が表示されます。投票がなかった場合は、[投票]列にNULLが表示されて結果に表示されます。

SELECT video_id, title, COUNT(voter_id) Votes
FROM submissions s
    LEFT OUTER JOIN votes v ON s.submission_id = v.video_id
GROUP BY video_id, title,
于 2013-03-15T18:23:59.407 に答える
0

次のような2つのテーブルの間で、投票とビデオタイトルを取得するために参加する必要があります。

SELECT submissions.submission_id
     , COUNT(1)
     , submissions.videoname
FROM submissions LEFT OUTER JOIN votes
    ON votes.video_id = submissions.submission_id
GROUP BY submissions.submission_id, submissions.videoname
于 2013-03-15T18:25:18.403 に答える