tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルSQLのIN句について
記事No11412
投稿日: 2008/02/13(Wed) 09:21
投稿者i-Q
いつも参考にさせていただいてます。

早速ですが、
下記のSQL文ですが、
IN句を使用するとエラーが発生します。
エラーの内容は、
『JOIN操作の構文エラーです』です。

UPDATE test1 AS A LEFT JOIN test2 AS B IN "C:\test.mdb" ON A.品番=B.品番 SET A.品名=B.品名

どこがおかしいのか分かりませんので、ご教示ください。
よろしくお願いします。

[ツリー表示へ]
タイトルRe: SQLのIN句について
記事No11416
投稿日: 2008/02/13(Wed) 10:35
投稿者魔界の仮面弁士
> どこがおかしいのか分かりませんので、ご教示ください。

その前に…この SQL に、どういう結果を期待しているのかを教えてもらえますか?
具体例を交えて。

[ツリー表示へ]
タイトルRe^2: SQLのIN句について
記事No11417
投稿日: 2008/02/13(Wed) 11:06
投稿者i-Q
魔界の仮面弁士様、お返事ありがとうございます。

> その前に…この SQL に、どういう結果を期待しているのかを教えてもらえますか?
> 具体例を交えて。
説明不足ですみません。
Data.MDBファイルにありますtest1テーブル内の「品番」及び「品名」フィールド
がありまして、
その品名フィールドの値を更新させることが目的なのですが、
別のMDBファイル(C:\test.mdb)内に作成したtest2テーブルの
「品番」で結合し「品名」フィールドの値をtest1へセットしたいのです。
ちなみに、IN句を除いた下記では上手くいきます。
UPDATE test1 AS A LEFT JOIN test2 AS B ON A.品番=B.品番 SET A.品名=B.品名
(これはテストとしてData.MDB内に両テーブルをおいた場合ですが)

といいますと、テーブルリンクでやればいいと思われるでしょうが、
勉強のため、他MDBのテーブル参照方法を知りたいと思いまして、
書き込みさせていただきました。

単純な書き方のミスだと思うのですが、どこがおかしいのか分かりません。
よろしくお願いします。

[ツリー表示へ]
タイトルRe^3: SQLのIN句について
記事No11418
投稿日: 2008/02/13(Wed) 11:28
投稿者魔界の仮面弁士
> 別のMDBファイル(C:\test.mdb)内に作成したtest2テーブルの
> 「品番」で結合し「品名」フィールドの値をtest1へセットしたいのです。

手っ取り早いのは、テーブル名の指定を
 LEFT JOIN [C:\test.mdb].[test2] AS B ON
のようにする事です。多分、この方が分かりやすいかと。


もしも IN 句を使いたいのであれば、
 LEFT JOIN (SELECT * FROM [test2] IN "C:\db1.mdb") AS B ON
とする必要がありますね。古いバージョンだと
 LEFT JOIN [SELECT * FROM test2 IN "C:\db1.mdb"]. AS B ON
の構文が必要になる事もありますけれども。

[ツリー表示へ]
タイトルRe^4: SQLのIN句について
記事No11421
投稿日: 2008/02/13(Wed) 13:04
投稿者i-Q
魔界の仮面弁士様、お返事ありがとうございます。

> 手っ取り早いのは、テーブル名の指定を
>  LEFT JOIN [C:\test.mdb].[test2] AS B ON
> のようにする事です。多分、この方が分かりやすいかと。
確かに分かりやすいですね、これも覚えておきます。

>  LEFT JOIN (SELECT * FROM [test2] IN "C:\db1.mdb") AS B ON
> とする必要がありますね。古いバージョンだと
>  LEFT JOIN [SELECT * FROM test2 IN "C:\db1.mdb"]. AS B ON
> の構文が必要になる事もありますけれども。
SELECT * FROM がいるのですね、大変勉強になりました。

丁寧に教えて頂きありがとうございました。
これで解決とさせていただきます、ありがとうございました。

[ツリー表示へ]