
SQLのSELECT文でOracle Database抽出しようとしています。
下記の場合の抽出方法が分かりません。
内容は2つのテーブルがあります。
【製品構成テーブル】と【品名テーブル】の2種類です。
【製品構成テーブル】
フィールドは2つで”CODE”と”KCODE”です。
CODEは商品品番、KCODEはその商品の構成部品のイメージです。
CODE KCODE
A123 C45
A123 D46
A123 E47
B132 G67
B132 C45
B132 E47
【品名テーブル】
フィールドは2つで”CODE”と”NAME”です。
CODEは商品品番、構成部品、全てのコードが入っています。
NAMEはそれぞれの名前です。
CODE NAME
A123 テレビ
B132 プレーヤー
C45 抵抗
D46 コンデンサ
E47 LED
G67 トランジスタ
★それぞれのテーブルを結合し下記のように抽出したいです。
CODE NAME KCODE NAME
A123 テレビ C45 抵抗
A123 テレビ D46 コンデンサ
A123 テレビ E47 LED
B132 プレーヤー G67 トランジスタ
B132 プレーヤー C45 抵抗
B132 プレーヤー E47 LED
品名テーブルをAS句を使って別名でH1、H2としています。
SELECT 製品構成テーブル.CODE , H1.NAME , 製品構成テーブル.KCODE , H2.NAME
FROM 製品構成テーブル
LEFT JOIN 品名テーブル AS H1 ON 製品構成テーブル.CODE = H1.CODE
LEFT JOIN 品名テーブル AS H2 ON 製品構成テーブル.KCODE = H2.CODE
【ORA-00905: キーワードがありません。】のメッセージが出てエラーになります。
コードに間違いがあれば、教えて頂きたいです。
★テーブル名は英数字表記しています。
VBAのADODB.ConnectionオブジェクトとSQL文を使ってエクセルにデータ抽出しようとしています。
実際のコードとテーブル名を記載します。
品名テーブル・・XHEAD
製品構成テーブル・・XPRTS
Dim strSQL As String strSQL = "select XPRTS.CODE,H1.NAME,XPRTS.KCODE,H2.NAME" strSQL = strSQL & " from XPRTS" strSQL = strSQL & " left join XHEAD As H1 on XPRTS.CODE = H1.CODE" strSQL = strSQL & " left join XHEAD As H2 on XPRTS.KCODE = H2.CODE"
XHEAD As H1、XHEAD As H2 と別名に置き換えずにXPRTS.CODEに対してXHEAD.NAMEを
結合するだけだと上手く抽出できています。
strSQL = "select XPRTS.CODE,XHEAD.NAME,XPRTS.KCODE" strSQL = strSQL & " from XPRTS" strSQL = strSQL & " left join XHEAD on XPRTS.CODE = XHEAD.CODE"
なので、ADODB.Connectionオブジェクトなどのコードに問題はないと思い、
上記コードから省略しています。
回答1件
あなたの回答
tips
プレビュー