質問編集履歴

4

説明に不要な名称の修正

2021/06/15 10:34

投稿

ig_h
ig_h

スコア0

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- テーブルの中に状態カラムを持つテーブル(serviceテーブル)の条件に応じて出力する順番を変えるSQLを作成したいのですが上手く実現できません。
1
+ テーブルの中に状態カラムを持つテーブル(Bテーブル)の条件に応じて出力する順番を変えるSQLを作成したいのですが上手く実現できません。
2
2
 
3
3
  どのように修正すれば実現できるでしょうか?
4
4
 

3

説明に不要な名称の修正

2021/06/15 10:34

投稿

ig_h
ig_h

スコア0

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,27 @@
6
6
 
7
7
  ```sql
8
8
 
9
- SELECT `companies`.*, `projects`.id as project_id, `services`.id as service_id, `services`.operating_status as service_operating FROM `companies` inner join `projects` on `companies`.id = `projects`.company_id left outer join `services` on `services`.project_id = `projects`.id ORDER BY `companies`.company_name ASC, FIELD(service_operating, '稼働中', '一時停止中', '終了');
9
+ SELECT
10
+
11
+   `A`.*,
12
+
13
+   `B`.id as B_id,
14
+
15
+   `C`.id as C_id,
16
+
17
+   `C`.operating_status as C_operating
18
+
19
+ FROM `A`
20
+
21
+ inner join `B` on `A`.id = `B`.A_id
22
+
23
+ left outer join `C` on `C`.B_id = `C`.id
24
+
25
+ ORDER BY
26
+
27
+   `A`.A_name ASC,
28
+
29
+   FIELD(C_operating, '稼働中', '一時停止中', '終了');
10
30
 
11
31
  ```
12
32
 
@@ -14,13 +34,13 @@
14
34
 
15
35
  実行しているSQLは細部は省きますが上記のものです。
16
36
 
17
- companiesテーブルとprojectsテーブルが親子関係にあり、projectsテーブルとservicesテーブルが親子関係にあります。
37
+ AテーブルとBテーブルが親子関係にあり、BテーブルとCテーブルが親子関係にあります。
18
38
 
19
39
  **実行結果としては**
20
40
 
21
- 単にcompaniesテーブルのcompany_nameで並び替えられたものの内部で状態ごと(稼働中、一時停止中、終了中)に順序が変わるだけなので
41
+ 単にAテーブルのA_nameで並び替えられたものの内部で状態ごと(稼働中、一時停止中、終了中)に順序が変わるだけなので
22
42
 
23
- 状態が終了中のみのデータでもcompany_nameの昇順で上の方に存在してしまいます。
43
+ 状態が終了中のみのデータでもA_nameの昇順で上の方に存在してしまいます。
24
44
 
25
45
  下記イメージ図
26
46
 
@@ -34,7 +54,7 @@
34
54
 
35
55
  '一時停止中'、'終了中'のみのものは下。という順番にしたいということです。
36
56
 
37
- 上記にあるイメージでは完全に稼働状況別に別れてしまっていて同一company_nameがあっても状態が異なる場合は表示場所が変わってしまいます。
57
+ 上記にあるイメージでは完全に稼働状況別に別れてしまっていて同一A_nameがあっても状態が異なる場合は表示場所が変わってしまいます。
38
58
 
39
59
 
40
60
 

2

誤解を与える画像の修正

2021/06/15 10:33

投稿

ig_h
ig_h

スコア0

test CHANGED
File without changes
test CHANGED
@@ -24,9 +24,7 @@
24
24
 
25
25
  下記イメージ図
26
26
 
27
-
28
-
29
- ![イメージ説明](66dddb19cead1a0013445b41e4092ba7.png)
27
+ ![イメージ説明](ceff7a53e04d20d640524dac2f4da84c.png)
30
28
 
31
29
 
32
30
 

1

文章修正、参考画像追加

2021/06/15 10:12

投稿

ig_h
ig_h

スコア0

test CHANGED
File without changes
test CHANGED
@@ -18,15 +18,25 @@
18
18
 
19
19
  **実行結果としては**
20
20
 
21
- companiesテーブルのcompany_nameの昇順で並び替えられた後にその内部で稼働中,一時停止中,終了で並び替えられてしまうのですが、
21
+ 単にcompaniesテーブルのcompany_nameで並び替えられた内部で状態ごと(稼働中一時停止中終了中)に序が変わるだけなので
22
+
23
+ 状態が終了中のみのデータでもcompany_nameの昇順で上の方に存在してしまいます。
24
+
25
+ 下記イメージ図
26
+
27
+
28
+
29
+ ![イメージ説明](66dddb19cead1a0013445b41e4092ba7.png)
22
30
 
23
31
 
24
32
 
25
33
  **本来実現したいこととしては**
26
34
 
27
- companiesテーブルのcompany_nameごとにまとめたデータの中で'稼働中'というステータを含ものは一番に、一時停止中のみのものはその下に、
35
+ 状態が’稼働中’であるデータを含んでいるものは上
28
36
 
29
- 終了のみのものは一番に、といった順に並び替えたいです。
37
+ '一時停止中'、'終了中'のみのものは下といたいということです。
38
+
39
+ 上記にあるイメージでは完全に稼働状況別に別れてしまっていて同一company_nameがあっても状態が異なる場合は表示場所が変わってしまいます。
30
40
 
31
41
 
32
42