プロフィール
SQL

Access SQL 複数テーブルの結合(JOIN)

Accessで複数テーブルを結合する時に、書き方が分からず苦労しました。

備忘録として残しておきます。

参考にサンプルのAccessファイルはこちらからダウンロードできます。

https://yahoo.jp/box/3mxF3d

RecordSetにテーブルのデータを取得するC#やVB.netを経験してからVBAを扱うと、DataTableってVBAにはないの?と思ってしまいますよね。 DataTabl...

2テーブルの結合

2つのテーブルを結合する場合の書き方です。

GoodsテーブルとRecipeテーブルを結合する場合を例にします。

抽出元

■Goodsテーブル

Goods_cd Goods_name price calorry
101004 ビーフカツランチ 880 0

■Recipeテーブル

goods_cd food_cd necessary_num
101004 201110 5
101004 201111 5
101004 201112 10
101004 201114 30
101004 201115 5
101004 201116 10
101004 201124 50
101004 201143 5
101004 201145 120
101004 201146 5
101004 201147 50

SQL

ポイントとしては、

LEFT JOIN Recipe ON (Goods.Goods_cd = Recipe.goods_cd)

のようにON以降を()で囲む必要があることです。

VBA C# オススメ参考書プログラミングの参考書でオススメの紹介をしていきます。 それぞれ私が使っている言語のみです。 VBAのオススメ参考書をExc...

3テーブルの結合

3つのテーブルを結合する場合の書き方です。

先ほどのGoodsテーブルとRecipeテーブルに加えて、

Foodsテーブルを結合する場合を例にします。

抽出元

■Foodsテーブル

foods_cd foods_name supplier_cd
201110 濃口しょうゆ 301200
201111 ウスターソース 301200
201112 中濃ソース 301200
201114 サラダ油 301107
201115 ゴマ油 301107
201116 ラード 301106
201124 冷凍ほうれん草 301103
201143 パセリ 301103
201145 牛ロース肉 301108
201146 トマトケチャップ 301200
201147 ナチュラルポテト 301103

SQL

ポイントはFROM直後~一つ目のJOINが終わるところまでを()で囲むところです。

FROM (Goods
LEFT JOIN Recipe
ON (Goods.Goods_cd = Recipe.goods_cd))

 

RecordSetからcsv、tsvファイルを出力するAccessのテーブルからtsvファイルを出力しようとしたところ、意外と簡単に出す方法がありませんでした。 備忘録のために残してお...

4テーブルの結合

3つのテーブルを結合する場合の書き方です。

先ほどのGoodsテーブル、Recipeテーブル、Foodsテーブルに加えて、

Supplierテーブルを結合する場合を例にします。

抽出元

■Supplierテーブル

supplier_cd supplier_name
301103 ライヘルフ
301106 流通パートナーズ
301107 全食
301108 大地
301200 キッコーマン

SQL

ポイントはFROM直後~二つ目のJOINが終わるところまでを()で囲むところです。

FROM ((Goods
LEFT JOIN Recipe
ON (Goods.Goods_cd = Recipe.goods_cd))
LEFT JOIN Foods
ON (Recipe.food_cd = Foods.foods_cd))

まとめ

結合するテーブル数が5、6、7…と増えても()で囲む数が増えていくだけです。

これを覚えておけば問題ありません。

 

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です