teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

2021/06/10 23:33

投稿

wawawa3120
wawawa3120

スコア5

title CHANGED
File without changes
body CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  複数のテーブルを内部結合する際に、結合条件を、条件によって使用するか判定したいです。
4
4
  inner joinのonの中で、case文を使用し、結合条件を使用する条件を分けることは可能でしょうか。
5
+ また、case文でexitsを使うときのselect文の条件につきまして、発生している問題に記載しました。
5
6
 
6
7
  現在明細マスタ(meisai_mst)と組織マスタ(soshiki_mst)を結合します。
7
8
  結合の条件は、
@@ -60,30 +61,11 @@
60
61
 
61
62
  ### 発生している問題・エラーメッセージ
62
63
 
63
- 下記SELECT文にて何も取得できません。
64
-
65
- **(6月11日追記)on以下を下記に変更することで取得できました。
64
+ on以下を下記に変更することで取得できました。
66
- しかし「--必要?」の箇所を記載してもしなくても、結果が変わりませんでした。
65
+ しかし「--必要?」の箇所を>記載してもしなくても、結果が変わりませんでした。
67
66
  代表者名(daihyo)も結合条件に入れたい場合、「case when exists」内に記載が必要かご教示ください。**
68
67
  ```ここに言語を入力
69
- on
68
+
70
- (
71
- meisai_m.tiiki =
72
- (case when exists (select 1 from soshiki_mst soshiki_m
73
- where soshiki_m.tiiki = meisai_m.tiiki
74
- and meisai_m.daihyo = soshiki_m.daihyo --必要?
75
- )
76
- then soshiki_m.tiiki
77
- end) --地域
78
- or meisai_m.soshiki =
79
- (case when exists ( select 1 from soshiki_mst soshiki_m
80
- where soshiki_m.soshiki = meisai_m.soshiki
81
- and meisai_m.daihyo = soshiki_m.daihyo --必要?
82
- )
83
- then soshiki_m.soshiki
84
- end) --組織
85
- )
86
- and meisai_m.daihyo = soshiki_m.daihyo;
87
69
  ```
88
70
 
89
71
 
@@ -97,19 +79,22 @@
97
79
  soshiki_m.dairiten --代理店
98
80
  from meisai_mst meisai_m
99
81
  inner join soshiki_mst soshiki_m
100
- on meisai_m.tiiki =
82
+   on
101
83
  (
84
+ meisai_m.tiiki =
102
- (case when exists (select 1
85
+ (case when exists (select 1 from soshiki_mst soshiki_m
103
- from soshiki_mst soshiki_m
104
- where soshiki_m.tiiki = meisai_m.tiiki)
86
+ where soshiki_m.tiiki = meisai_m.tiiki
87
+ and meisai_m.daihyo = soshiki_m.daihyo --必要?
88
+ )
105
89
  then soshiki_m.tiiki
106
90
  end) --地域
107
91
  or meisai_m.soshiki =
108
- (case when exists (select 1
92
+ (case when exists ( select 1 from soshiki_mst soshiki_m
109
- from soshiki_mst soshiki_m
110
- where soshiki_m.soshiki = meisai_m.soshiki)
93
+ where soshiki_m.soshiki = meisai_m.soshiki
94
+ and meisai_m.daihyo = soshiki_m.daihyo --必要?
95
+ )
111
96
  then soshiki_m.soshiki
112
97
  end) --組織
113
98
  )
114
- and meisai_m.daihyo = soshiki_m.daihyo;
99
+ and meisai_m.daihyo = soshiki_m.daihyo;
115
100
  ```

4

自己解決疑惑

2021/06/10 23:33

投稿

wawawa3120
wawawa3120

スコア5

title CHANGED
File without changes
body CHANGED
@@ -62,6 +62,31 @@
62
62
 
63
63
  下記SELECT文にて何も取得できません。
64
64
 
65
+ **(6月11日追記)on以下を下記に変更することで取得できました。
66
+ しかし「--必要?」の箇所を記載してもしなくても、結果が変わりませんでした。
67
+ 代表者名(daihyo)も結合条件に入れたい場合、「case when exists」内に記載が必要かご教示ください。**
68
+ ```ここに言語を入力
69
+ on
70
+ (
71
+ meisai_m.tiiki =
72
+ (case when exists (select 1 from soshiki_mst soshiki_m
73
+ where soshiki_m.tiiki = meisai_m.tiiki
74
+ and meisai_m.daihyo = soshiki_m.daihyo --必要?
75
+ )
76
+ then soshiki_m.tiiki
77
+ end) --地域
78
+ or meisai_m.soshiki =
79
+ (case when exists ( select 1 from soshiki_mst soshiki_m
80
+ where soshiki_m.soshiki = meisai_m.soshiki
81
+ and meisai_m.daihyo = soshiki_m.daihyo --必要?
82
+ )
83
+ then soshiki_m.soshiki
84
+ end) --組織
85
+ )
86
+ and meisai_m.daihyo = soshiki_m.daihyo;
87
+ ```
88
+
89
+
65
90
  ### 該当のソースコード
66
91
 
67
92
  ```Postgres

3

誤字

2021/06/10 15:43

投稿

wawawa3120
wawawa3120

スコア5

title CHANGED
File without changes
body CHANGED
@@ -65,7 +65,7 @@
65
65
  ### 該当のソースコード
66
66
 
67
67
  ```Postgres
68
- select meisai_m.meisaino --明細No
68
+ select meisai_m.meisaino, --明細No
69
69
  meisai_m.soshiki, --組織
70
70
  meisai_m.tiiki, --地域
71
71
  meisai_m.daihyo, --代表者

2

内容の修正

2021/06/10 15:11

投稿

wawawa3120
wawawa3120

スコア5

title CHANGED
File without changes
body CHANGED
@@ -21,6 +21,30 @@
21
21
  1|10|1|山田花子|AAA
22
22
  2|10|1|山田花子|BBB
23
23
 
24
+ create table meisai_mst
25
+ (
26
+ meisaino CHARACTER(255),
27
+ nyukinbi date,
28
+ soshiki CHARACTER(255),
29
+ tiiki CHARACTER(255),
30
+ daihyo CHARACTER(255)
31
+ );
32
+
33
+ create table soshiki_mst
34
+ (
35
+ hojinno CHARACTER(255),
36
+ soshiki CHARACTER(255),
37
+ tiiki CHARACTER(255),
38
+ daihyo CHARACTER(255),
39
+ dairiten CHARACTER(255)
40
+ )
41
+
42
+ INSERT INTO meisai_mst values('1',cast('2020/12/30'as date),'10',null,'山田花子');
43
+ INSERT INTO meisai_mst values('2',cast('2020/12/30'as date),'10','1','山田花子');
44
+ INSERT INTO soshiki_mst values('1','10','1','山田花子','AA');
45
+ INSERT INTO soshiki_mst values('2','10','1','山田花子','BB');
46
+
47
+
24
48
  上記のデータでは、明細No(pk)1は[組織]で結合し、明細No(pk)2は[地域]で結合します。
25
49
  どちらも明細マスタ1件に対し、組織マスタのデータが2件取得できます。
26
50
 

1

誤字

2021/06/10 15:09

投稿

wawawa3120
wawawa3120

スコア5

title CHANGED
File without changes
body CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  現在明細マスタ(meisai_mst)と組織マスタ(soshiki_mst)を結合します。
7
7
  結合の条件は、
8
- (1)地域][組織]の順で、値を取得できた条件を使用します。
8
+ (1)[地域][組織]の順で、値を取得できた条件を使用します。
9
9
  (2)代表者で結合します。
10
10
 
11
11