2011-02-06 100 views
1

我有一個考試數據庫,有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很好。

+0

有關內部連接的一些信息...外部連接,交叉連接...太久以前...試試吧。 – yankee 2011-02-06 04:32:30

+0

給定的表格結構不會映射到您的查詢 – NotMe 2011-02-06 04:37:12

回答

2
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