出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

[4370] サブクエリを使わないでデータを抽出
投稿者:Ryoさん 2004/06/16 11:34:20
こんにちは。お聞きしたいことがあるのですが。
サブクエリを使わずに該当データを抽出する方法で悩んでいます。
(使用DBがMySQLなのでサブクエリが使えないのです。)
まずテーブル1から該当するデータを数件抽出します。
次に、テーブル2からテーブル1で抽出したデータ数件に該当するデータを
抽出します。
わかりやすく例を用いると、
たとえば、テーブル1から氏名を抽出。
氏名がAさん、Bさん、Cさん、Dさんが出たとします。
次にテーブル2で氏名がAさん、Bさん、Cさん、Dさんであるもの(データ)
を抽出します。
これをSQLでどうやって書けばいいのか・・
で、考えたのですが、要するに
StrSQL="select * from テーブル2 where 氏名 in (A,B,C,D)
というふうにin演算子を用いて、氏名がAまたはBまたはCまたはDのものを
抽出するというふうにしようかと考えました。
そこで、まずテーブル1で抽出したデータを配列に入れてSQL文を走らせようと
したのですが、その記述方法がエラーが出てわかりません。
ソースを一部書きます。

dim Hairetu()  '配列を作る
Redim Preserve Hairetu(0)
Do while ObjRS("氏名").EOF = False '抽出されたデータ数分ループさせる
name = ObjRS("氏名")
Redim preserve Hairetu(Ubound(Hairetu)+1)
Hairetu(i) = name  '配列に入れていく
ObjRS.MoveNext
i = i+1
Loop
これでHairetu(0)=A、Hairetu(1)=B・・・という風にデータが入ってるはずなのですが・・
その後がわかりません。
StrSQL = "select * from テーブル2 where 氏名 in "
StrSQL = StrSQL & "(" &Hairetu(0) & "," & Hairetu(1) & ・・・")"
という文を作りたいのですが、
Forでループさせようと思って
StrSQL ="select * from テーブル2 where 氏名 in ("
StrSQL =StrSQL & For i=0 to Ubound(Hairetu) Hairetu(i)& i=i+1 Next &")"
とすると文法がおかしいとエラーが出ます。
ここの記述方法を教えていただきたいのです。
in の中をForで配列をループする記述方法をどなたか教えてください。
お願いします。

サブクエリを使わないでデータを抽出   Ryoさん [2004/06/16 11:34:20] [4370]
  Re:サブクエリを使わないでデータを抽出   YasNet(管理人)さん [2004/06/16 12:16:33] [4371]
    Re:サブクエリを使わないでデータを抽出   Ryoさん [2004/06/16 13:08:38] [4373]
      Re:サブクエリを使わないでデータを抽出   YasNet(管理人)さん [2004/06/16 13:25:32] [4374]
        Re:サブクエリを使わないでデータを抽出   Ryoさん [2004/06/16 14:52:11] [4375]
    Re:サブクエリを使わないでデータを抽出   通りすがりさん [2004/06/17 15:06:28] [4385]


TreeBBS For ASP V.0.1.3
Program By YasNet