次の方法で共有

SQL文について(パススルークエリ)

Anonymous
2019-03-19T14:07:34+00:00

Access2016からパススルークエリでSQLServer2017と接続し、データ参照しています。

その際のSQL文の書き方について教えてください。

下記3つのテーブルがあります。

注文一覧 (Table_Order)

受注No  商品名  数量

1     A    100

2     B    200

3     C    10

4     A    150

商品一覧 (Table_Product)

商品ID  商品名

1     A

2     B

3     C

注力商品一覧 (Table_Focus)

ID   商品ID

1    2

2    3

この時、受注一覧上で注力商品かどうかを知りたいと思っています。

完成イメージ

受注No  商品名  数量  注力商品

1     A    100

2     B    200   〇

3     C    10     〇

4     A    150

SELECT TO.受注No, TO.商品名 , TO.数量,

             (SELECT COUNT(*) FROM Table_Focus AS TF INNER JOIN Table_Product AS TP ON TF.商品ID=TP.商品ID

              WHERE TO.商品名=TP.商品名) AS FocusProduct

FROM Table_Order AS TO

Access側でFocusProductが1以上なら〇と表示するとしようと考えていたのですが、うまくクエリが

動きません。

自分なりに色々検索していたのですが、サブクエリでJOINする例が出てこないのですが、もしかして

サブクエリでJOINすることはできないのでしょうか。

その場合、上記完成イメージを作るためにはどのようなクエリを作ればよいでしょうか。

よろしくお願いします。

補足:

受注一覧の商品名を商品IDとし、商品一覧と結合で商品名を表示すれば商品ID同士を比較するサブクエリ

で済むし、管理も楽になると思うのですが、受注一覧テーブルは商品一覧テーブルを作る前に作った

システムで今、商品IDに変更すると色々な所にバグが出そうなため、上記のような商品一覧の商品名と

注力商品テーブルの商品IDを比較するクエリで何とかしたいと思っています。

。。。いずれは受注一覧の商品名を商品IDにシステム変更しないといけないとわかっているのですが。。。

ご教授のほどよろしくお願いします。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2019-03-20T02:52:25+00:00

> FROM Table_Order AS TO

TO は SQL における予約語の1つなので、

テーブル/フィールドの名前/別名として

使用しない方がよいでしょう。

(例えば TO を TODR に変更すれば一応は動作するはず)

Microsoft Docs: 予約済みキーワード (Transact-SQL)

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2019-03-20T03:24:13+00:00

    sk.exe様

    いつもありがとうございます。

    予約語だったことが原因でしたか。。。

    おかげさまで無事動くようになりました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません