作为一个SQL新手,只是想把事情拼凑在一起,我觉得有一个更优雅的解决方案,我似乎无法想出来。我发现很多看似相似但不完全的例子,尽管如此,我的查询总是一团糟而且没有成功。我正在处理的结构是三个表格,如下面的简要示例所示。具有唯一ID和各种章节号以及" SN"," SC'或" GS"的member_status的用户表。带有唯一ID和各省ID的章节表。我引用的第三个表格是我的省表,唯一的因素是唯一的省份ID列表。我的用户表是一个非常大的数据集,我担心任何子查询的使用或可能影响速度的其他问题。一些有希望的例子使用与Count不同,但如果是这样我就无法正确组织。
我的最终目标也是以下示例,但是要获得状态为IN的所有成员的计数(" SC",#34; SN"),这些成员位于具体省份。我知道我必须让table_users.chapter加入table_chapters.id。我想我还需要将table_chapters.province_id联合到table_provinces.id。在潜在的Count和Group By之间,我只是迷路了,任何帮助都会受到赞赏。如果需要,我很乐意提供更多信息。
如果有帮助的话,我已经开始在SQLFiddle中加载我的数据了。
Check here for SQLFiddle schema
数据架构
table_users
id | chapter | member_status
---------------------
1 | 101 | GS
2 | 101 | SN
3 | 101 | SC
4 | 102 | SN
5 | 102 | GS
6 | 103 | SC
7 | 103 | SC
8 | 104 | SN
9 | 104 | SN
10 | 104 | SC
11 | 105 | GS
12 | 105 | SC
table_chapters
id | province_id
-------------------
101 | 1
102 | 2
103 | 2
104 | 1
105 | 3
table_provinces
table_provinces just with sequential list by id
所需输出
Province id | Count of Members
------------------------------
1 | 5
2 | 3
3 | 1
注意输出忽略了" GS"
的状态答案 0 :(得分:0)
如果我理解正确,您希望所有用户记录的计数与其他表中的章节匹配。
试试这个:
select c.province_id,count(u.member_status) as member_count from users u
inner join chapters c on u.chapter=c.id
where u.member_status in ('SC','SN')
group by c.province_id