質問編集履歴

9

2020/04/28 12:01

投稿

pansaku
pansaku

スコア1

test CHANGED
File without changes
test CHANGED
@@ -73,3 +73,5 @@
73
73
  ### 補足情報[リンク内容](https://tech.pjin.jp/blog/2016/08/26/sql練習問題-問17/)
74
74
 
75
75
  __上のリンク内容の17の正解のソースのことです__
76
+
77
+ my SQL A5:SQL mk-2 version8.0.19

8

質問内容

2020/04/28 12:00

投稿

pansaku
pansaku

スコア1

test CHANGED
@@ -1 +1 @@
1
- コードをより省略したいです
1
+ 同じクエリ何度も書かないうにしたいです
test CHANGED
@@ -1,14 +1,24 @@
1
- 下記のgoal diffの算出に『my goals』『enemy goals』を求める長いクエリが記述されていて冗長なので同じクエリを何回も書かないようにしたいです。このリンク内の正解のコードです。
2
-
3
- my SQL A5:SQL mk-2
1
+ ### 同じクエリを何度も書かないようにしたいです。
4
-
5
- version8.0.19
6
-
7
- コード
8
2
 
9
3
 
10
4
 
5
+ 下記のコードを作成しましたが、「MY GOALS」「ENEMY GOALS」のソースと(追加分)のソース内で同じものがあるので、このクエリを省略したいです。
6
+
7
+
8
+
9
+ 追加分で「MY GOALS」-「ENEMY GOALS」を出しています。
10
+
11
+
12
+
13
+
14
+
15
+ ### 該当のソースコード
16
+
17
+
18
+
19
+ ```
20
+
11
- SELECT p1.kickoff, c1.name AS my_country, c2.name AS enemy_country,
21
+ SELECT p1.kickoff, c1.name AS my_country, c2.name AS enemy_country,
12
22
 
13
23
  c1.ranking AS my_ranking, c2.ranking AS enemy_ranking,
14
24
 
@@ -16,9 +26,9 @@
16
26
 
17
27
  (
18
28
 
19
- SELECT COUNT(g2.id)
29
+ SELECT COUNT(g2.id)
20
30
 
21
- FROM goals g2
31
+ FROM goals g2
22
32
 
23
33
  LEFT JOIN pairings p2 ON p2.id = g2.pairing_id
24
34
 
@@ -28,11 +38,11 @@
28
38
 
29
39
  -- 追加ここから
30
40
 
31
- (SELECT COUNT(g1.id) FROM goals g1 WHERE p1.id = g1.pairing_id) - (
41
+ (SELECT COUNT(g1.id) FROM goals g1 WHERE p1.id = g1.pairing_id) - (
32
42
 
33
- SELECT COUNT(g2.id)
43
+ SELECT COUNT(g2.id)
34
44
 
35
- FROM goals g2
45
+ FROM goals g2
36
46
 
37
47
  LEFT JOIN pairings p2 ON p2.id = g2.pairing_id
38
48
 
@@ -51,3 +61,15 @@
51
61
  WHERE c1.group_name = 'C' AND c2.group_name = 'C'
52
62
 
53
63
  ORDER BY p1.kickoff, c1.ranking
64
+
65
+ ```
66
+
67
+ ### 試したこと
68
+
69
+ 「my_goals」−「enemy_goals」とすると「Unknown columns」になってしまいました。
70
+
71
+
72
+
73
+ ### 補足情報[リンク内容](https://tech.pjin.jp/blog/2016/08/26/sql練習問題-問17/)
74
+
75
+ __上のリンク内容の17の正解のソースのことです__

7

2020/04/28 11:46

投稿

pansaku
pansaku

スコア1

test CHANGED
File without changes
test CHANGED
@@ -1,44 +1,46 @@
1
- ###my SQL A5:SQL mk-2
1
+ 下記のgoal diffの算出に『my goals』『enemy goals』を求める長いクエリが記述されていて冗長なので同じクエリを何回も書かないようにしたいです。このリンク内の正解のコードです。
2
2
 
3
+ my SQL A5:SQL mk-2
4
+
3
- version8.0.19です。__下記リンク内正解のgoal diffの算出に『my goals』『enemy goals』を求める長いクエリが記述されていて冗長なので同じクエリを何回も書かないようにしたいです。###[リンク内容](https://tech.pjin.jp/blog/2016/08/26/sql練習問題-問17/)。__```SQL
5
+ version8.0.19
4
6
 
5
7
  コード
6
8
 
7
9
 
8
10
 
9
- SELECT p1.kickoff, c1.name AS my_country, c2.name AS enemy_country,
11
+ SELECT p1.kickoff, c1.name AS my_country, c2.name AS enemy_country,
10
12
 
11
- c1.ranking AS my_ranking, c2.ranking AS enemy_ranking,
13
+ c1.ranking AS my_ranking, c2.ranking AS enemy_ranking,
12
14
 
13
- (SELECT COUNT(g1.id) FROM goals g1 WHERE p1.id = g1.pairing_id) AS my_goals,
15
+ (SELECT COUNT(g1.id) FROM goals g1 WHERE p1.id = g1.pairing_id) AS my_goals,
14
16
 
15
- (
17
+ (
16
18
 
17
- SELECT COUNT(g2.id)
19
+ SELECT COUNT(g2.id)
18
20
 
19
- FROM goals g2
21
+ FROM goals g2
20
22
 
21
- LEFT JOIN pairings p2 ON p2.id = g2.pairing_id
23
+ LEFT JOIN pairings p2 ON p2.id = g2.pairing_id
22
24
 
23
- WHERE p2.my_country_id = p1.enemy_country_id AND p2.enemy_country_id = p1.my_country_id
25
+ WHERE p2.my_country_id = p1.enemy_country_id AND p2.enemy_country_id = p1.my_country_id
24
26
 
25
- ) AS enemy_goals,
27
+ ) AS enemy_goals,
26
28
 
27
- -- 追加ここから
29
+ -- 追加ここから
28
30
 
29
- (SELECT COUNT(g1.id) FROM goals g1 WHERE p1.id = g1.pairing_id) - (
31
+ (SELECT COUNT(g1.id) FROM goals g1 WHERE p1.id = g1.pairing_id) - (
30
32
 
31
- SELECT COUNT(g2.id)
33
+ SELECT COUNT(g2.id)
32
34
 
33
- FROM goals g2
35
+ FROM goals g2
34
36
 
35
- LEFT JOIN pairings p2 ON p2.id = g2.pairing_id
37
+ LEFT JOIN pairings p2 ON p2.id = g2.pairing_id
36
38
 
37
- WHERE p2.my_country_id = p1.enemy_country_id AND p2.enemy_country_id = p1.my_country_id
39
+ WHERE p2.my_country_id = p1.enemy_country_id AND p2.enemy_country_id = p1.my_country_id
38
40
 
39
- ) AS goal_diff
41
+ ) AS goal_diff
40
42
 
41
- -- 追加ここまで
43
+ -- 追加ここまで
42
44
 
43
45
  FROM pairings p1
44
46
 

6

2020/04/28 10:37

投稿

pansaku
pansaku

スコア1

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ###my SQL A5:SQL mk-2
2
2
 
3
- version8.0.19です。__得失点差の算出に『my goals』『enemy goals』を求める長いクエリが記述されていて冗長ですので同じクエリを書かないようにしたいです。__```SQL
3
+ version8.0.19です。__下記リンク内正解goal diffの算出に『my goals』『enemy goals』を求める長いクエリが記述されていて冗長ので同じクエリを何回も書かないようにしたいです。###[リンク内容](https://tech.pjin.jp/blog/2016/08/26/sql練習問題-問17/)。__```SQL
4
4
 
5
5
  コード
6
6
 
@@ -49,13 +49,3 @@
49
49
  WHERE c1.group_name = 'C' AND c2.group_name = 'C'
50
50
 
51
51
  ORDER BY p1.kickoff, c1.ranking
52
-
53
-
54
-
55
- ```
56
-
57
- versionなども下記のリンク通りで大丈夫です。
58
-
59
- リンク内正解のクエリは冗長なので同じクエリを使わず実行させたいです。
60
-
61
- [リンク内容](https://tech.pjin.jp/blog/2016/08/26/sql練習問題-問17/)

5

2020/04/28 10:16

投稿

pansaku
pansaku

スコア1

test CHANGED
File without changes
test CHANGED
@@ -54,18 +54,8 @@
54
54
 
55
55
  ```
56
56
 
57
+ versionなども下記のリンク通りで大丈夫です。
57
58
 
58
-
59
- my SQL A5:SQL mk-2
60
-
61
- version8.0.19
62
-
63
-
64
-
65
- 同じコードが重複してしまってるので
66
-
67
- コードより短いものにしたいです。
59
+ リンク内正解クエリは冗長なので同じクエリ使わず実行させたいです。
68
-
69
- 下記リンク内容の正解のコードです。
70
60
 
71
61
  [リンク内容](https://tech.pjin.jp/blog/2016/08/26/sql練習問題-問17/)

4

2020/04/28 10:05

投稿

pansaku
pansaku

スコア1

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,6 @@
1
- ```SQL
1
+ ###my SQL A5:SQL mk-2
2
+
3
+ version8.0.19です。__得失点差の算出に『my goals』『enemy goals』を求める長いクエリが記述されていて冗長ですので、同じクエリを書かないようにしたいです。__```SQL
2
4
 
3
5
  コード
4
6
 

3

2020/04/28 10:00

投稿

pansaku
pansaku

スコア1

test CHANGED
File without changes
test CHANGED
@@ -52,6 +52,14 @@
52
52
 
53
53
  ```
54
54
 
55
+
56
+
57
+ my SQL A5:SQL mk-2
58
+
59
+ version8.0.19
60
+
61
+
62
+
55
63
  同じコードが重複してしまってるので
56
64
 
57
65
  このコードをより短いものにしたいです。

2

2020/04/28 09:56

投稿

pansaku
pansaku

スコア1

test CHANGED
File without changes
test CHANGED
@@ -52,6 +52,8 @@
52
52
 
53
53
  ```
54
54
 
55
+ 同じコードが重複してしまってるので
56
+
55
57
  このコードをより短いものにしたいです。
56
58
 
57
59
  下記リンク内容の正解のコードです。

1

2020/04/28 09:29

投稿

pansaku
pansaku

スコア1

test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,59 @@
1
- この答えからより、省略したものを知りたいのですが、from句に全てまとめるのでしょうか?
1
+ ```SQL
2
+
3
+ コード
2
4
 
3
5
 
4
6
 
7
+ SELECT p1.kickoff, c1.name AS my_country, c2.name AS enemy_country,
8
+
9
+ c1.ranking AS my_ranking, c2.ranking AS enemy_ranking,
10
+
11
+ (SELECT COUNT(g1.id) FROM goals g1 WHERE p1.id = g1.pairing_id) AS my_goals,
12
+
13
+ (
14
+
15
+ SELECT COUNT(g2.id)
16
+
17
+ FROM goals g2
18
+
19
+ LEFT JOIN pairings p2 ON p2.id = g2.pairing_id
20
+
21
+ WHERE p2.my_country_id = p1.enemy_country_id AND p2.enemy_country_id = p1.my_country_id
22
+
23
+ ) AS enemy_goals,
24
+
25
+ -- 追加ここから
26
+
27
+ (SELECT COUNT(g1.id) FROM goals g1 WHERE p1.id = g1.pairing_id) - (
28
+
29
+ SELECT COUNT(g2.id)
30
+
31
+ FROM goals g2
32
+
33
+ LEFT JOIN pairings p2 ON p2.id = g2.pairing_id
34
+
35
+ WHERE p2.my_country_id = p1.enemy_country_id AND p2.enemy_country_id = p1.my_country_id
36
+
37
+ ) AS goal_diff
38
+
39
+ -- 追加ここまで
40
+
41
+ FROM pairings p1
42
+
43
+ LEFT JOIN countries c1 ON c1.id = p1.my_country_id
44
+
45
+ LEFT JOIN countries c2 ON c2.id = p1.enemy_country_id
46
+
47
+ WHERE c1.group_name = 'C' AND c2.group_name = 'C'
48
+
49
+ ORDER BY p1.kickoff, c1.ranking
50
+
51
+
52
+
53
+ ```
54
+
55
+ このコードをより短いものにしたいです。
56
+
57
+ 下記リンク内容の正解のコードです。
58
+
5
59
  [リンク内容](https://tech.pjin.jp/blog/2016/08/26/sql練習問題-問17/)