
strSQL = strSQL & " SELECT M.顧客番号 AS 顧客番号 , M.支店番号 AS 支店番号 , S.支店名 AS 支店名 , T.売上 AS 売上 "
strSQL = strSQL & " FROM[顧客マスタ$] M INNER JOIN [支店マスタ$] S "
strSQL = strSQL & " ON M.顧客番号 = S.顧客番号 "
strSQL = strSQL & " FROM[顧客マスタ$] M INNER JOIN [データ$] T "
strSQL = strSQL & " ON M.顧客番号 = T.顧客番号 "
strSQL = strSQL & " WHERE M.顧客番号 = '" & Range("A2") & "'"
[顧客マスタ$] M [支店マスタ$] S [データ$] T
顧客番号がKEYです。
これを上記のように
" SELECT M.顧客番号 AS 顧客番号 , M.支店番号 AS 支店番号 , S.支店名 AS 支店名 , T.売上 AS 売上 "のように抽出したいですが
うまくいきません
No.5ベストアンサー
- 回答日時:
こちらの質問で回答してみたコード(だいぶ余計に書きましたがSQL文についてはリンク先と併せているはずです)について、
検証結果報告はないままに次の質問に移っているようですが、元々こちらで先に質問を立てていたのですね。
結果としては3つほどの質問を立てているようですがどれについても修正した書き方は提示されているのに、
その検証はされないのでしょうか?
No.4
- 回答日時:
何点か。
INNER JOIN は、 2つのテーブル(状のものを)を組合せるのに、ON で条件を指定する必要があります。
[顧客マスタ$] m INNER JOIN [支店マスタ$] s
で2つのテーブルを結合するので、この直後に m と s とを結び付けるための ON 句が必要です。
そうしてできた 「 [顧客マスタ$] m INNER JOIN [支店マスタ$] s ON 〜 」に
「INNER JOIN [データ$] t」し、その前までに結合されたテーブルと結び付けるための ON を指定します。
前回省略しましたが、 ON の書く位置や内容が重要です。
m.顧客番号 = s.顧客番号 = t.顧客番号
プログラミング初心者がよくやる間違いです。
これは「 m.顧客番号 と s.顧客番号 と t.顧客番号とが等しい」という意味では**あ*り*ま*せ*ん***
ここで = は「左右が同じなら 『真』を表わす値、そうでないなら『偽』を表わす値」という「計算」をする演算子です。
m.顧客番号 = s.顧客番号 = t.顧客番号
↓
『真』= t.顧客番号 または 『偽』= t.顧客番号
という途中計算になります。おそらく上記は『偽」になるでしょう。
何か、本は読みましたか?
3つのテーブルの結合くらいだったら、例文が載ってると思うのですが。
No.3
- 回答日時:
> 紐づけするためになりましたがなかなか
> 勝手に自分で考えてやりましたが、
> 手本がないため、自己流です。
それなら、まずは本屋でSQLの入門書を探してみましょう。
1つのSELECTに対して、FROM は一つです。
FROM A JOIN B
のような感じで FROM と JOIN をセットにして覚えてしまっているのでは?
これは
FROM 「A JOIN B」 (AとBを結合したものから選択)
という意味です。「FROM A JOIN B」というセットではありません。
テーブルはいくつでも結合できます。
FROM A JOIN B JOIN C
のように書けば
FROM 「A JOIN B JOIN C」 (AとBを結合したものにCを結合したものから選択)
の意味になります。
※ INNER等と、ONの条件は省略して書いています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) SQLで抽出 4 2022/12/04 13:55
- Excel(エクセル) Excel 指定した固有番号で、複数の行を削除する方法は? 2 2022/03/30 15:18
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Excel(エクセル) 関数の式を教えてください 2 2022/04/04 11:15
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- クレジットカード クレジットカードの解約 2 2022/07/26 15:49
- Visual Basic(VBA) 複数ページあるPDFファイル内の文字列等の情報をキーにPDFをグループ分け分割したい。 2 2022/06/25 09:51
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- Excel(エクセル) 【Excel】住所に郵便番号を付記する方法 3 2022/05/07 17:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ワードでの単純作業の効率化に...
-
Access フォームのデータがテー...
-
Access IF文でテーブルに存在し...
-
Access VBAでクエリーのレコー...
-
Accessにて検索結果の一覧表示...
-
データベースの1要素に複数デー...
-
Access クエリ このレコードセ...
-
Accessで移動累計
-
複数のフィールドから条件を抽出
-
別のDBからテーブルをコピーす...
-
Access2013VBA 複数のテーブル...
-
ワードで保存するファイル名の...
-
Access2003での排他制御
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
エクセルVBAで5行目からオート...
-
Accessでテーブル名やクエリ名...
-
Oracle 2つのDate型の値の差を...
-
INSERT INTO ステートメントに...
-
SQLServer2005のSQL文での別名...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access VBAでクエリーのレコー...
-
Access フォームのデータがテー...
-
データベースの1要素に複数デー...
-
Access IF文でテーブルに存在し...
-
ワードでの単純作業の効率化に...
-
Access 既に開いているフォー...
-
別のDBからテーブルをコピーす...
-
顧客IDを入力すると顧客名や住...
-
ACCESS で マクロの中でフィ...
-
ワードで保存するファイル名の...
-
Access 縦(行)のデータを横(列)...
-
シングルクォーテーションとダ...
-
ADOでレコードを閉じるタイミン...
-
Access レコードロックについて...
-
Accessデータベースで行と列を...
-
テーブル1 2 3 の結合
-
子フォームから別(孫)フォー...
-
Access2013VBA 複数のテーブル...
-
主キーやオートインクリメント...
-
Accessで名寄せグループの関係...
おすすめ情報
strSQL = strSQL & " ON M.顧客番号 = S.顧客番号 "
strSQL = strSQL & " FROM[顧客マスタ$] M INNER JOIN [データ$] T "
strSQL = strSQL & " ON M.顧客番号 = T.顧客番号 "
演算子がありませんと表示されます。
strSQL = strSQL & " SELECT m.住所 as 住所 , m.顧客番号 as 顧客番号, s.支店名 as 支店名 , t.売上 as 売上 "
strSQL = strSQL & " FROM "
strSQL = strSQL & " [顧客マスタ$] m INNER JOIN [支店マスタ$] s INNER JOIN [データ$] t "
strSQL = strSQL & " ON m.顧客番号 = s.顧客番号 = t.顧客番号 "
strSQL = strSQL & " where m.顧客番号 = '" & Range("a2") & "'"
申し訳ございません
まちがってるところ教えてください。