Microsoft Access 掲示板

【SQL】LEFT JOINで結合先がないフィールドについて

2 コメント
views
4 フォロー

こんにちは。
ACCESS、VBAでSQLを実行してクエリやテーブルを作成するツールを作っています。
下記のようなことをやりたいのですが、SQLでどう書けばいいかがわかりません。。
どなたかご教授いただければ幸いです。

Aテーブル
| 和名     | 英語名    |
| -------- | -------- |
| りんご  | Apple      |
| もも   | peach|

Bテーブル
| 和名     | 値段    |
| -------- | -------- |
| りんご  |100円    |
| いちご     |200円  |
| もも   | 300円  |

二つのテーブルがあったとして、Bテーブルの全レコードに LEFT JOIN でAテーブルを結合したとします。
実行結果としては、Aテーブル.英語名,Bテーブル.値段として出したいのですが
Aテーブルに英語名のデータがなかった場合、英語名のフィールドにAテーブル.和名のまま出したいのです。

◆理想のSQL実行結果
| 英語名   | 値段    |
| -------- | -------- |
| Apple    |100円    |
| peach  |300円  |
| いちご   |200円  |

SELECT Aテーブル.英語名, Bテーブル.値段
FROM Aテーブル RIGHT JOIN Bテーブル ON Aテーブル.和名 = Bテーブル.和名;

上記のSQL文だと3行目のいちごは、NULLで表示されます。
理想の結果にするのはどう書けばよいのでしょうか。
どうぞ宜しくお願い致します。

maru
作成: 2021/07/16 (金) 12:24:43
通報 ...
1

理想の結果にするのはどう書けばよいのでしょうか。

SELECT句で、英語・日本語どちらの表記を優先して表示させるかを明示しましょう。
 

SELECT Nz( x.英語名, y.和名 ) As 名前
     , y.値段
FROM       Aテーブル x
RIGHT JOIN Bテーブル y
        ON x.和名 = y.和名 ;
2

素早いお返事に感謝いたします!
試したところ理想通りの結果になりました。
勉強になります、ありがとうございました!