Sql 调查结果;“失踪”;排

Sql 调查结果;“失踪”;排,sql,mysql,sql-server,Sql,Mysql,Sql Server,我有一个examn数据库,有4个表:用户、答案、问题和主题 user table U_id | name subjects table S_id | Subject questions table Q_id | S_id | question | Correct answers table U_id | Q_id | answers 我需要找到每个主题、每个用户的正确答案数量 我的问题 select U_id,questions.S_id ,count(Q_id) from an

我有一个examn数据库,有4个表:用户、答案、问题和主题

user table
U_id | name

subjects table
S_id | Subject

questions table
Q_id | S_id | question | Correct 

answers table
U_id | Q_id  | answers
我需要找到每个主题、每个用户的正确答案数量

我的问题

select  U_id,questions.S_id ,count(Q_id) 
from answers inner join questions  on  questions.q_id = answers.q_id
where questions.Correct  = answers.answer
group by answers.U_id,questions.S_id

result:
1 | s1 | 2
1 | s2 | 3
1 | s3 | 1
2 | s1 | 1
2 | s2 | 1
这给了我每个主题正确答案的数量,但如果用户没有正确答案,则S_id不会显示,我需要显示带有0的答案

我需要的结果是

result:
1 | s1 | 2
1 | s2 | 3
1 | s3 | 1
2 | s1 | 1
2 | s2 | 1
2 | s3 | 0
有什么帮助吗


请注意,我使用的是MySQL,但MS SQL server anwers很好。

关于内部连接的一些信息。。。外部连接,交叉连接。。。很久以前。。。试试看。给定的表结构没有映射到您的查询。我已将S_id添加到问题表中
select u.U_id, q.S_id, count(a.q_id) 
from users u
cross join questions q
left join answers a on q.q_id = a.q_id and u.u_id = a.u_id and q.Correct = a.answer
group by u.U_id, q.S_id