みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ひとつのクエリで結果を出せる?

お世話になります。
Access2010

以下のテーブルがあります。

支社テーブル
支社名    都道府県  電話番号
支社A     東京都  03-xxxx-xxxx
支社B     大阪府  06-xxxx-xxxx
支社C     神奈川県 045-xxx-xxxx


売上テーブル
支社名 売上額
A    100円
B    500円
A    200円
A    300円
C    100円
B    600円

上記2つのテーブルを使って以下の結果を【ひとつのクエリ】で表示
させたいのですが可能でしょうか。

支社名 売上額 都道府県 電話番号
A    100円 東京都  03-xxxx-xxxx
B    500円 大阪府  06-xxxx-xxxx
A    200円 東京都  03-xxxx-xxxx
A    300円 東京都  03-xxxx-xxxx
C    100円 神奈川県 045-xxx-xxxx
B    600円 大阪府  06-xxxx-xxxx

要するに、売上テーブルの支社名は略称で記載されているので、
支社テーブルの支社名を略称に変換した上で、紐づけを行う必要が
あります。

支社テーブルでSwitchを用いて支社AをA、支社BをB、支社CをCに
置き換えるクエリを作成し、それと売上テーブルを紐づければ
結果を得ることはできるのですが、今回はひとつのクエリで
行いたいところです。

ご教示の程、宜しくお願い致します。

投稿日時 - 2016-04-20 12:12:47

QNo.9161244

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

VBAで関数を作成。
例えば
モジュールconv(X as sring)
Dim res as string
select X
case "支社A"
res= "A"
case "支社B"
res= "B"
select 支社A


case else
res= ""
end select
モジュールconv = res
end function

SQL
select [支社テーブル]![都道府県], [支社テーブル]![電話番号],[支社テーブル]![支社名] from 支社テーブル INNER JOIN 売上テーブル on モジュールconv ([支社テーブル]![支社名]) = 売上テーブル![支社名]

調整は必要です自分でお願いします。
もっと簡単なのは変換テーブルを作成してそれをJOINすればよい。上はそれが出来ない場合。

投稿日時 - 2016-04-20 12:27:05

補足

IDii24さま
早速のご回答ありがとうございます。
あくまでもクエリ(SQL)での方法を質問させて
いただいております。

質問後、いろいろ試したところ、以下のSQLで
いけることを確認しました。
SELECT 売上テーブル.委託業者名, 売上テーブル.売上額, Q.都道府県, Q.電話番号
FROM 売上テーブル INNER JOIN (SELECT Switch([支社名]='支社A','A',[支社名]='支社B','B',[支社名]='支社C','C') AS 略称, 支社テーブル.都道府県, 支社テーブル.電話番号
FROM 支社テーブル) AS Q ON 売上テーブル.委託業者名 = Q.略称
ORDER BY 売上テーブル.売上額 DESC;

ありがとうござました。

投稿日時 - 2016-04-20 12:38:33

お礼

失礼しました。こっちのSQLです。
SELECT 売上テーブル.支社名, 売上テーブル.売上額, Q.都道府県, Q.電話番号
FROM 売上テーブル INNER JOIN (SELECT Switch([支社名]='支社A','A',[支社名]='支社B','B',[支社名]='支社C','C') AS 略称, 支社テーブル.都道府県, 支社テーブル.電話番号 FROM 支社テーブル) AS Q ON 売上テーブル.支社名 = Q.略称
ORDER BY 売上テーブル.売上額 DESC;

投稿日時 - 2016-04-20 12:52:10

あなたにオススメの質問