出来るのだASP Q&A掲示板(過去LOG)
訪問数 52046
昨日 889
今日 776 【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。 |
![]() ![]() ![]() ![]() ![]() |
[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で配列をループする記述方法をどなたか教えてください。 お願いします。 |
![]() ![]() |
![]() ![]() ![]() ![]() ![]() |
TreeBBS For ASP V.0.1.3 |