回答編集履歴
2
追記
answer
CHANGED
|
@@ -10,4 +10,43 @@
|
|
|
10
10
|
```
|
|
11
11
|
|
|
12
12
|
対象人数から提出済み数を引くだけでよいかもしれません。
|
|
13
|
-
対象人数は普通別途ユーザーテーブルなどで管理していると思います。
|
|
13
|
+
対象人数は普通別途ユーザーテーブルなどで管理していると思います。
|
|
14
|
+
|
|
15
|
+
# 追記
|
|
16
|
+
考え方からするとkadaiテーブルで提示されている処理は
|
|
17
|
+
kadaiを管理するのではなくkadai_userの中間テーブルで、別途kadaiとuserを
|
|
18
|
+
管理するテーブルがあるとよりSQL的になります
|
|
19
|
+
|
|
20
|
+
参考)
|
|
21
|
+
課題=3つ、ユーザー=7人いたとして、その連携状態が
|
|
22
|
+
課題とユーザーの組み合わせ
|
|
23
|
+
(1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,4),(2,5),(3,1),(3,5),(3,6)
|
|
24
|
+
について提出済みとします
|
|
25
|
+
|
|
26
|
+
```SQL
|
|
27
|
+
create table kadai_user(
|
|
28
|
+
id int(11) primary key auto_increment,
|
|
29
|
+
kadai_id int(11),
|
|
30
|
+
user_id int(11),
|
|
31
|
+
teisyutsu int(11) default 0
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
insert into kadai_user(kadai_id,user_id)
|
|
35
|
+
values
|
|
36
|
+
(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),
|
|
37
|
+
(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),
|
|
38
|
+
(3,1),(3,2),(3,3),(3,4),(3,5),(3,6),(3,7);
|
|
39
|
+
|
|
40
|
+
update kadai_user set teisyutsu=1
|
|
41
|
+
where concat(kadai_id,",",user_id) in (
|
|
42
|
+
"1,1","1,2","1,3","1,4",
|
|
43
|
+
"2,1","2,2","2,4","2,5",
|
|
44
|
+
"3,1","3,5","3,6");
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
- 集計
|
|
48
|
+
```SQL
|
|
49
|
+
select kadai_id,sum(teisyutsu=1) as 提出済,sum(teisyutsu=0) as 未提出
|
|
50
|
+
from kadai_user
|
|
51
|
+
group by kadai_id
|
|
52
|
+
```
|
1
調整
answer
CHANGED
|
@@ -2,5 +2,12 @@
|
|
|
2
2
|
未提出は本当にteisyutsu = nullのデータを置いてあるのでしょうか?
|
|
3
3
|
(課題を出した時点で全員未提出状態にしてデータを投入しているかどうか?)
|
|
4
4
|
|
|
5
|
+
もし、上記のような運用方法なら
|
|
6
|
+
```SQL
|
|
7
|
+
SELECT kadai_num,sum(teisyutsu = 1) as 提出数,sum(hyoka IS NULL) as 未提出数
|
|
8
|
+
FROM kadai
|
|
9
|
+
GROUP BY kadai_num
|
|
10
|
+
```
|
|
11
|
+
|
|
5
12
|
対象人数から提出済み数を引くだけでよいかもしれません。
|
|
6
13
|
対象人数は普通別途ユーザーテーブルなどで管理していると思います。
|