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

回答編集履歴

3

追記

2020/09/17 08:37

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -8,8 +8,18 @@
8
8
 
9
9
  追記
10
10
  --
11
+ > |出来ればcode3とcode4のpriceは、nullではなく「0」を表示させたいです。
12
+ >
13
+ > ここに注目しないでください。
14
+ > この文は外部結合が思うようにいった時に「ついでに」という話なので
15
+ > 外部結合等を使ってcodeをすべて表示させつつ、表AとBを結合させる方法を
16
+ > 先に教えてほしいです。
17
+
18
+ 質問に記載されている内容では間違えようがありません。
11
19
  ```SQL
12
20
  select A.code_a as code, A.name, Coalesce(B.price, 0) as price
13
21
  from A left join B
14
22
  on A.code_a = B.code_b
15
- ```
23
+ ```
24
+ 他の方のコメントでwhere条件の記述がありましたが、抽出する為の条件としては結合条件だけではなくwhere条件も必要です。
25
+ ひょっとして、結合しているテーブルも質問では省略したりしていませんか?

2

追記

2020/09/17 08:37

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -4,4 +4,12 @@
4
4
  上記はNullかどうかの判断に特化した関数ですけど、CASEでも同じことは出来ます。
5
5
  条件が複雑になるような場合は、CASEを使用すると良いでしょう。
6
6
  [CASE 式](https://www.shift-the-oracle.com/sql/case-when-expression.html)
7
- ※oracle独自の[Decode](https://www.shift-the-oracle.com/sql/functions/decode.html)もありますけどCASE式をお薦めします。
7
+ ※oracle独自の[Decode](https://www.shift-the-oracle.com/sql/functions/decode.html)もありますけどCASE式をお薦めします。
8
+
9
+ 追記
10
+ --
11
+ ```SQL
12
+ select A.code_a as code, A.name, Coalesce(B.price, 0) as price
13
+ from A left join B
14
+ on A.code_a = B.code_b
15
+ ```

1

追記

2020/09/17 08:34

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,2 +1,7 @@
1
1
  標準SQLである**COALESCE**の方をお薦めします。(**NVL**は独自関数であるし2択なので)
2
- [NVL、COALESCE](https://www.shift-the-oracle.com/sql/functions/nvl-coalesce.html)
2
+ [NVL、COALESCE](https://www.shift-the-oracle.com/sql/functions/nvl-coalesce.html)
3
+
4
+ 上記はNullかどうかの判断に特化した関数ですけど、CASEでも同じことは出来ます。
5
+ 条件が複雑になるような場合は、CASEを使用すると良いでしょう。
6
+ [CASE 式](https://www.shift-the-oracle.com/sql/case-when-expression.html)
7
+ ※oracle独自の[Decode](https://www.shift-the-oracle.com/sql/functions/decode.html)もありますけどCASE式をお薦めします。