初めまして。
今VB6 + SQLServerでSQL文を使用してデータ抽出を行ってるのですが
希望通りの動作が行えません・・・
今つまずいてる箇所は・・・
--------------------
テーブル1
フィールド1_1
フィールド1_2
フィールド1_3
フィールド1_4
--------------------
テーブル2
フィールド2_1
フィールド2_2
フィールド2_3
フィールド2_4
--------------------
テーブル3
フィールド3_1
フィールド3_2
フィールド3_3
フィールド3_4
--------------------
というテーブルが3つあります。
これで抽出したいデータなんですが・・・
テーブル1.フィールド1_1とテーブル2.フィールド2_1を結んで
更に
テーブル1.フィールド1_2とテーブル2.フィールド2_1を結んで
更に
テーブル1.フィールド1_3とテーブル3.フィールド3_1を結んで
更に
テーブル1.フィールド1_4とテーブル3.フィールド3_1を結びたいですが
テーブル1のフィールド1_1とフィールド1_2には値が必ず入ってますのでいいのですが、
フィールド1_3とフィールド1_4はどちらか片方しか値が入ってません・・・
時には両方とも入ってません。
それで抽出したいのですが、どのようにSQL文を記載したらよいか
どなたかご教授頂ければ幸いです。
一応自分で作成したのが・・・
sql = "select * from テーブル1 INNER JOIN テーブル2 ON "
sql = sql & "テーブル1.フィールド1_1 = テーブル2.フィールド2_1"
sql = sql & " Or "
sql = sql & "テーブル1.フィールド1_2 = テーブル2.フィールド2_1"
sql = sql & " INNER JOIN テーブル3 ON "
sql = sql & "テーブル1.フィールド1_3 = テーブル3.フィールド3_1"
sql = sql & " Or "
sql = sql & "テーブル1.フィールド1_4 = テーブル3.フィールド3_1"
これだと希望通りに出ませんでした・・・
宜しくお願い致します。
すいません・・・
書き忘れてたことがありますので
追記致します。
検索で取り出したい値は
テーブル1のすべて
テーブル2のフィールド2_1とフィールド2_2
テーブル3のフィールド3_3フィールド3_4
の以上です。
抽出する場合のテーブル1のフィールド1_1とフィールド1_2はテーブル2の値を取るのですが、一つのテーブルを一気に2つ取れるのでしょうか??
ASとかでやらないといけないのでしょうか??
ご教授頂ければ幸いです。
宜しくお願い致します。
先ほどの抽出は何とか出来ました。
ただ、SQL文での検索結果は問題ないんですが
フィールドから値を取ると何も入ってない状態になってしまいます。
どなたかご教授頂ければ幸いです。
下記に今現状を記載しておきます。
sql = "select テーブル1.*, テーブル2.*, テーブル2_1.*, テーブル3.*, テーブル3_1.フィールド3_2 AS フィールド4_2 FROM テーブル3 AS テーブル3_1 RIGHT JOIN (テーブル3 RIGHT JOIN (テーブル2 AS テーブル2_1 RIGHT JOIN (テーブル2 RIGHT JOIN テーブル1 ON (テーブル2.フィールド2_1 = テーブル1.フィールド1_2) AND (テーブル2.フィールド2_1 = テーブル1.フィールド1_1)) ON (テーブル2_1.フィールド2_1 = テーブル1.フィールド1_1) AND (テーブル2_1.フィールド2_1 = テーブル1.フィールド1_2)) ON (テーブル3.フィールド3_1 = テーブル1.フィールド1_4) AND (テーブル3.フィールド3_1 = テーブル1.フィールド1_3)) ON (テーブル3_1.フィールド3_1 = テーブル1.フィールド1_3) AND (テーブル3_1.フィールド3_1 = テーブル1.フィールド1_4)"
これで実行する
件数は問題なし
obj("フィールド4_2")
この部分に値が入ってない状態になります・・・
絶対入ってるわけではありませんが
何件かは入ってるんですが、空っぽの状態です・・・
ちなみにテーブル1はすべて値が入ってました。
宜しくお願い致します。
なんとか自力で事故解決出来ました。
有り難う御座いました。
また質問があれば書かさせて頂きます。
有り難う御座いました。
アップルさま
既に解決されたようですが、他の方が参考できるように
どもように解決されたかを投稿してください。
これでは単なる荒らしと思われても仕方ないですよ。
誤字、言葉の乱用もチラホラありますし・・・
で、本当に解決したのですか?
投稿記事を基に検証してみましたが、おかしな点がありました。
> ただ、SQL文での検索結果は問題ないんですが
投稿されたSQL文で、本当に問題ありませんか?
私が試した限りでは、うまく結合されませんでしたが・・・
たとえば
テーブル1
フィールド1_1 に 1
フィールド1_2 に 2
フィールド1_3 に 3
のレコードが1件のみ存在。
テーブル2
フィールド2_1 に 1
フィールド2_2 に 2
フィールド2_3 に 3
フィールド2_4 に 4
の1件と、
フィールド2_1 に 2
フィールド2_2 に 3
フィールド2_3 に 4
フィールド2_4 に 5
の1件、合計2件のレコードがあるとします。
投稿されたSQL文では、正常に結合されませんでしたが?
RIGHT JOIN ではよろしくないのでは?
> obj("フィールド4_2")
obj って何ですか?独自関数ですか?
宣言を書いてください。
あと、これってVB6に関するトピックスではないですよね?
SQLに関することですので、今後はそういった話題を扱っている
掲示板に投稿されることをお勧めします。
ツイート | ![]() |