回答編集履歴

4

追記

2018/10/30 05:17

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -65,3 +65,41 @@
65
65
  MU.CORP_CD
66
66
 
67
67
  ```
68
+
69
+ 追記
70
+
71
+ --
72
+
73
+ 出力したいのは`M_CORPORATION`の情報で、`M_USER`や`T_REQUEST`は条件なので、
74
+
75
+ `M_CORPORATION`に結合せず条件とすれば、重複は考慮する必要がありません。
76
+
77
+ また、処理時間も短縮されると思います。
78
+
79
+ ```SQL
80
+
81
+ SELECT
82
+
83
+ CORP_CD AS VALUE
84
+
85
+ , CORP_NAME AS DISP
86
+
87
+ FROM M_CORPORATION
88
+
89
+ WHERE CORP_CD in (
90
+
91
+ SELECT MU.CORP_CD
92
+
93
+ FROM M_USER MU inner join T_REQUEST TR
94
+
95
+ ON MU.USER_CD=TR.USER_CD
96
+
97
+ where MU.DELETE_FLG = '0'
98
+
99
+ )
100
+
101
+ ORDER BY
102
+
103
+ CORP_CD
104
+
105
+ ```

3

追記

2018/10/30 05:17

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -11,3 +11,57 @@
11
11
  よく見ると出力しているのは企業の情報なので、USER_CDによるソートは不要ですね。
12
12
 
13
13
  order by を削除して下さい。
14
+
15
+ 追記
16
+
17
+ --
18
+
19
+ 並びを意識するならDISTINCTではなく、group by で明示した方が良いですね。
20
+
21
+ ```SQL
22
+
23
+ SELECT
24
+
25
+ MU.CORP_CD AS VALUE
26
+
27
+ , MC.CORP_NAME AS DISP
28
+
29
+ FROM
30
+
31
+ M_USER MU
32
+
33
+ INNER JOIN M_CORPORATION MC
34
+
35
+ ON MU.CORP_CD = MC.CORP_CD
36
+
37
+ WHERE
38
+
39
+ EXISTS (
40
+
41
+ SELECT
42
+
43
+ 1
44
+
45
+ FROM
46
+
47
+ T_REQUEST TR
48
+
49
+ WHERE
50
+
51
+ MU.USER_CD = TR.USER_CD
52
+
53
+ )
54
+
55
+ AND MU.DELETE_FLG = '0'
56
+
57
+ group by
58
+
59
+ MU.CORP_CD
60
+
61
+ , MC.CORP_NAME
62
+
63
+ ORDER BY
64
+
65
+ MU.CORP_CD
66
+
67
+ ```

2

追記

2018/10/30 04:51

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -4,22 +4,10 @@
4
4
 
5
5
 
6
6
 
7
- 今の内容を生かして行うなら、order by は削除してselect を
7
+ ~~今の内容を生かして行うなら、order by は削除してselect を変更する。
8
8
 
9
- ```SQL
10
-
11
- SELECT DISTINCT
12
-
13
- MU.USER_CD
14
-
15
- , MC.CORP_NAME AS DISP
16
-
17
- , MU.CORP_CD AS VALUE
18
-
19
- ```
20
-
21
- のようにする。
22
-
23
- ~~項目数を合わせたいなら、もう一つ階層を深くしてその外側で、order byする。~~
9
+ 項目数を合わせたいなら、もう一つ階層を深くしてその外側で、order byする。~~
24
10
 
25
11
  よく見ると出力しているのは企業の情報なので、USER_CDによるソートは不要ですね。
12
+
13
+ order by を削除して下さい。

1

追記

2018/10/30 04:18

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -20,4 +20,6 @@
20
20
 
21
21
  のようにする。
22
22
 
23
- 項目数を合わせたいなら、もう一つ階層を深くしてその外側で、order byする。
23
+ ~~項目数を合わせたいなら、もう一つ階層を深くしてその外側で、order byする。~~
24
+
25
+ よく見ると出力しているのは企業の情報なので、USER_CDによるソートは不要ですね。