回答編集履歴

8

項目名修正

2018/06/06 09:33

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -48,15 +48,15 @@
48
48
 
49
49
  ```SQL
50
50
 
51
- select ac.a_id, ab.b_id, ac.c_id, ac.sex
51
+ select ac.a_id, ab.b_id, ac.c_id, ac.name
52
52
 
53
53
  from (
54
54
 
55
- select a.id as a_id, c.id as c_id, c.sex
55
+ select a.id as a_id, c.id as c_id, c.name
56
56
 
57
57
  from a, c
58
58
 
59
- group by a.id, c.id, c.sex
59
+ group by a.id, c.id, c.name
60
60
 
61
61
  ) ac left join (
62
62
 

7

推敲

2018/06/06 09:33

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -78,4 +78,4 @@
78
78
 
79
79
  ポイントになるのは、基準となるものを如何に作り出すかと言う事ですね。
80
80
 
81
- あとはその基準に一度に結合する条件を揃える整形をしたものと結合する。
81
+ はその基準に一度に結合する条件を揃える整形をしたものと結合する。

6

推敲

2018/06/06 09:19

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -76,6 +76,6 @@
76
76
 
77
77
  ```
78
78
 
79
- ポイントになるのは、基準となるものをいかに作り出すかと言う事ですね。
79
+ ポイントになるのは、基準となるものを如何に作り出すかと言う事ですね。
80
80
 
81
81
  あとはその基準に一度に結合する条件を揃える整形をしたものと結合する。

5

コメント追記

2018/06/06 09:19

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -75,3 +75,7 @@
75
75
 
76
76
 
77
77
  ```
78
+
79
+ ポイントになるのは、基準となるものをいかに作り出すかと言う事ですね。
80
+
81
+ あとはその基準に一度に結合する条件を揃える整形をしたものと結合する。

4

追記修正

2018/06/06 09:18

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -42,18 +42,36 @@
42
42
 
43
43
  ---
44
44
 
45
- aとcの直積(full join)を行ったものからBへ生徒のIDと性別で外部結合ます。
45
+ aとcの直積(full join)をグループidと性別でグルーピングたものを基準に、
46
+
47
+ aとbを結合したものに外部結合します。
46
48
 
47
49
  ```SQL
48
50
 
49
- select ac.A_id, ac.b_id, ac.c_id, ac.sex
51
+ select ac.a_id, ab.b_id, ac.c_id, ac.sex
50
52
 
51
- from (select a.id as a_id, a.b_id, c.id as c_id, c.sex from A full join C ) ac
53
+ from (
52
54
 
53
- left join B
55
+ select a.id as a_id, c.id as c_id, c.sex
54
56
 
55
- on ac.b_id = B.id and ac.c_id=b.c_id
57
+ from a, c
56
58
 
59
+ group by a.id, c.id, c.sex
60
+
61
+ ) ac left join (
62
+
63
+ select a.id as a_id, a.b_id, b.c_id
64
+
65
+ from A inner join b
66
+
67
+ on a.b_id=b.id
68
+
69
+ ) ab
70
+
71
+ on ac.a_id=ab.a_id and ac.c_id=ab.c_id
72
+
57
- order by ac.A_id, ac.C_id, ac.b_id
73
+ order by ac.A_id, ab.b_id, ac.c_id
74
+
75
+
58
76
 
59
77
  ```

3

追記

2018/06/06 09:11

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -35,3 +35,25 @@
35
35
  2| 4| 1| men
36
36
 
37
37
  3| 5| 1| men
38
+
39
+
40
+
41
+ 追記
42
+
43
+ ---
44
+
45
+ aとcの直積(full join)を行ったものとからBへ生徒のIDと性別で外部結合します。
46
+
47
+ ```SQL
48
+
49
+ select ac.A_id, ac.b_id, ac.c_id, ac.sex
50
+
51
+ from (select a.id as a_id, a.b_id, c.id as c_id, c.sex from A full join C ) ac
52
+
53
+ left join B
54
+
55
+ on ac.b_id = B.id and ac.c_id=b.c_id
56
+
57
+ order by ac.A_id, ac.C_id, ac.b_id
58
+
59
+ ```

2

修正

2018/06/06 08:35

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -20,6 +20,8 @@
20
20
 
21
21
  ```
22
22
 
23
+ ※サンプルデータだと5件にしかならないので、差分の2行は何がしたいのかな?
24
+
23
25
  |a_id|b_id|c_id|name
24
26
 
25
27
  |--:|--:|--:|--:|
@@ -33,7 +35,3 @@
33
35
  2| 4| 1| men
34
36
 
35
37
  3| 5| 1| men
36
-
37
- Null| null| 2| women
38
-
39
- Null| null| 2| women

1

修正

2018/06/06 08:22

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  on C.id = B.c_id
18
18
 
19
- order by coalesce(A.id, C.id), C.id
19
+ order by coalesce(A.id, b.id), C.id
20
20
 
21
21
  ```
22
22