0

ビデオカテゴリのテーブルとビデオ録画のテーブルがあります。ビデオ カテゴリの列は id と cname で、ビデオ録画にはカテゴリ列があります。各カテゴリに属する​​ビデオ録画の数を表示したいと考えています。

私が試してみました

select vc.cname, count(*) as catcount
from video_categories vc, video_recordings vr
where vc.cname = vr.category
group by vc.id

しかし、それは id が 0 である最初のカテゴリの記録の数のみを返します。それらをすべて表示する必要があります。

私はこのようなテーブルを作成しました

Video_Recordings (
recording_id,
director,
title,
category,
image_name,
duration,
rating,
year_released,
price,
stock_count
);

Video_Categories (
id,
name
);

Video_Actors (
id,
name,
recording_id
);

正しいデータ型を使用してから、それらをロードしました

Load Data local Infile
' D:/files...' into table
video_recodrings fields terminated by '\t' lines terminated by '\n';

私がそれをしてテーブルをチェックすると、テーブルは正しいです。

4

4 に答える 4

0

クエリは正常に機能しています。必要な変更は 1 つだけです。http://sqlfiddle.com/#!2/2e060/1 を確認してください

于 2013-10-10T09:05:54.433 に答える
0

カテゴリごとの行数が必要な場合は、vc.cname でグループごとにグループ化します

select vc.cname, count(*) as catcount
from video_categories vc
inner join video_recordings vr on vc.cname = vr.category
group by vc.cname
于 2013-10-10T07:23:34.797 に答える
0

に対して間違った列を一致させている可能性がありますVideo_Recordings.category。私は間違っているかもしれませんが、 だけid = 0が返されるという事実は、category列が整数であり、Video_Categories.id( ではなくVideo_Categories.name) への参照であることを意味します。

したがって、次のようにクエリを変更します。

select vc.cname, count(*) as catcount
from video_categories vc, video_recordings vr
where vc.id = vr.category
group by vc.id
;
于 2013-10-11T07:30:08.030 に答える
0

それらを vc.name でグループ化する必要があります

select vc.cname, count(*) as catcount from video_categories as vc, video_recordings as vr where vc.cname = vr.category group by vc.name

于 2013-10-10T07:27:27.623 に答える