0

ユーザーが投票できるアプリがあり、2つのテーブルがあります

ビデオ

| id |uri_code|ファイル名|created_on|削除済み|

投票

| id | video_id | ip | created_on |

すべてのビデオ情報を選択し、各ビデオの総投票数を取得できるようにしたいのですが、これはsqlステートメントで可能ですか、それともサーバー側のコードで行うのが最善でしょうか?

4

4 に答える 4

2

それは確かにSQLで可能です-この種のことはまさにSQLが得意なことです!あなたはビデオごとにすべての投票の数を「グループ化」したいので、そのGROUP BY条項はまさにあなたが求めているものです:

SELECT Video.*, COUNT(*)
FROM Video JOIN Votes ON Votes.video_id = Video.id
GROUP BY Video.id;
于 2012-04-27T09:56:41.210 に答える
0
select vi.*, count(vo.id) as votes
from video vi
inner join votes vo on vi.id = vo.video_id
group by vi.id
于 2012-04-27T09:56:34.567 に答える
0

多分このようなもの:

SELECT
    Video.id,
    Video.uri_code,
    Video.filename,
    Video.created_on,
    Video.deleted,
    (
        SELECT
            COUNT(*)
        FROM
            Votes
        WHERE
            Votes.video_id=Video.id
    ) AS Total
FROM
    Video
于 2012-04-27T09:56:35.470 に答える
0

こんにちはここでmysqlクエリを使用できます

1.他の条件なしで動画の総投票数のみを取得する必要がある場合

SELECT count( Votes.id ) AS total_vote, Video. *
FROM Video
LEFT JOIN Votes ON Video.id = Votes.video_id
WHERE Video.deleted = '1'
GROUP BY Video.id

2.いくつかの条件で動画の合計投票数を取得する必要がある場合、たとえば、削除された動画の場合は0と1の値0、列挙型の削除された値の場合は1であり、削除されていない動画の投票の詳細を取得する必要がある場合

SELECT count( Votes.id ) AS total_vote, Video. *
FROM Video
LEFT JOIN Votes ON Video.id = Votes.video_id
WHERE Video.deleted = '0'
GROUP BY video.id
于 2012-04-27T10:17:19.263 に答える