我有两个表:

Membership
mID     StartingDate    Name     Address     Gender      EndingDate

Circulation Info
ISBN    mID    DateOfBorrow    DateOfReturn    DateOfLoss

我正在尝试找到每种性别的活动水平,但是到目前为止,我还没有那么幸运。

到目前为止,这是我尝试过的:

SELECT Membership.Gender, [Circulation Info].mID, Membership.mID
FROM [Circulation Info] AS c INNER JOIN Membership AS m ON [Circulation Info].mID = Membership.mID
GROUP BY m.mID
HAVING Membership.Gender='F'

尝试运行此语法时,我收到语法错误,它将我带到第一行的“流通信息”。

#1楼 票数:2

原因是您为表设置了别名,但是使用表名作为列名的前缀而不是别名。 尝试这个:

SELECT m.Gender, c.mID, m.mID
FROM [Circulation Info] AS c INNER JOIN Membership AS m ON c.mID = m.mID
GROUP BY m.mID
HAVING m.Gender='F';

#2楼 票数:1

您正在为表使用别名,因此请使用别名。

SELECT m.Gender, c.mID, m.mID
FROM [Circulation Info] AS c INNER JOIN Membership AS m ON c.mID = m.mID
GROUP BY m.mID
HAVING m.Gender='F'

#3楼 票数:1 已采纳

除了关于表别名的问题(当给表加上别名时,必须使用该别名而不是表名来限定字段名),我认为您还希望Count()函数为您提供“活动级别” 。

另请注意,Access通常会抱怨SELECT子句中的任何字段表达式,该字段表达式不包含在GROUP BY ,也不是聚合表达式( Min()Max()Count()等)。

我不明白为什么在SELECT列表中需要同时使用c.mIDm.mID 每行应该相同。 还可以考虑将标准m.Gender='F'HAVING移到WHERE子句。

SELECT m.mID, Count(*) AS activity_level
FROM
    [Circulation Info] AS c
    INNER JOIN Membership AS m
    ON c.mID = m.mID
WHERE m.Gender='F'
GROUP BY m.mID;

  ask by freeWind translate from so

未解决问题?本站智能推荐:

4回复

寻找多性别的患者

我需要找到记录有多种性别的患者。 (我希望我知道如何创建表。) 在这里我们可以看到患者1和2都可以,但是患者3有多种性别。 (系统中有4种可用性别)。 列是[Hospital Number]和[Sex Code] ,该表称为Table1 。
1回复

SQL-计算性别的出现

我是SQL新手,正在创建电影租借网站数据库。 我必须显示数据库的一些摘要统计信息,因此我打算显示选择了具有特定认证的电影以供出租的男性和女性人数。 我想要的输出是: 此查询的相关表为: FILM和MEMBER表应该是不言自明的,而LIST是MEMBER希望租借的电影的一部
1回复

如何将行输入到列中? 性别查询

这里我写的查询非常简单。 我得到的结果是 我怎么想得到这个结果: 我想获取列中的句点 如何更改我的查询?
1回复

SQL更新库存水平

运行以下代码时出现此错误: 我知道第一条语句可以正常运行,但是第二条语句会引发该错误,我对这样复杂的更新语句不熟悉,因此任何具有SQL知识的人都可以发现任何东西吗? 提前致谢, 鲍勃·P
1回复

在访问中将垂直表变为水平

我有这张桌子: 我想将其转换为此。 (该ID将是唯一的,并且同一ID的每个重复ID的名称都会添加到新字段中。 在Access中有没有一种快速的方法可以做到这一点。 VBA代码正常。 我尝试了Pivot和转置(在Excel中)都无法正常工作,或者没有给我想要的结果。 像(第
3回复

垂直到水平表,按月分组

长时间潜伏-第一次海报。 我是Access的新手,有一个要通过查询操作的数据表。 目前来看: ID | $Value | Month 1 | 184 | 10/1/2012 1 | 186 | 11/1/2012 1 | 176
1回复

MS Access(或 SQL)查询:相当于水平 CountIf()

如果我有一组这样的值: 字段 1 领域 2 字段 3 领域 4 一种 乙 C 2 4
1回复

SQL将垂直列转换为水平和计数值

我确实需要您的帮助,并且从SQL的角度来看,我似乎不太想像SQL程序员那样尝试获取以下结果集。 请考虑下表(这是我的MS Access MDB文件的快照: 我需要您的帮助才能基本捕获指标(每种请求类型的出现次数/计数,然后按部门进行排序),从而得到以下新结果集: