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

您必须按 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 回答
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. 我可能错了,但 onlyid = 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

您的查询运行良好,只需进行一点小改动。检查http://sqlfiddle.com/#!2/2e060/1

于 2013-10-10T09:05:54.433 回答