我正在嘗試製作代碼問題網站,例如CodeChef。MySQL「For Each」
到目前爲止,我有兩個表,problems
和submissions
。
problems
由單個id
字段組成auto_increment
ed。 (它確實有更多的領域,但它們是不相關的。)
submissions
由一個id
場是auto_increment
版,一個problem_id
場是foreign key
-ed到problems.id
和bool
correct
領域。
這是他們(簡體)創建語句:
create table problems
(
id bigint auto_increment primary key not null,
/* more fields that are unimportant */
);
create table submissions
(
id bigint auto_increment primary key not null,
problem_id bigint not null,
correct bool not null,
/* more fields */
foreign key (problem_id) references problems(id)
);
現在,我想要做的是以下幾點:
對於每個id
在problems
,返回一行由該ID的,該問題的正確提交數量以及該問題的提交總數。
基本上,我想用下面的查詢:
select
problems.id,
sum(submissions.correct),
count(submissions.id)
from submissions inner join problems
on submissions.problem_id=problems.id and problems.id=[problem_id];
其中[problem_id]
越過在problems
每id
。
看來我需要使用子查詢,但我嘗試了它,它根本不起作用。
如何創建一個查詢來返回這些結果?
糾正我,如果我錯了,但我不能只使用,而不是''之總和(s.correct)'(如果(s.correct ,1,0))'因爲'true'存儲爲'1','false'存儲爲'0'? – Jashaszun
儘管我最喜歡你的答案,因爲你也碰到了「左連接」點。 – Jashaszun
我嘗試避免布爾類型,所以我不能回答你的問題。試試吧:) – Sebas