• ベストアンサー

SQLの発行方法

SQL文を発行する場合にはSQL文を変数に格納してExecuteメソッドで発行しますが、SQL文が2文になる場合(最初のSQL文であるデータを取得して、次のSQL文でそのデータを使って検索等を行うとき)にはもう一度上記の手続きを繰り返すしかないのでしょうか?。 あるいは、SQL文を長くして一文にまとめる(できる場合とできない場合があるように思うのですが)方法があるのでしょうか 一般的な処理方法を教えていただけないでしょうか

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.4

エンジンがACCESSの場合です。 SELECT 社員名テーブル.社員名フィールド FROM 社員名テーブル inner join 外出中社員情報テーブル on 社員名テーブル.社員コード = 外出中社員情報テーブル.社員コード where 外出中社員情報テーブル.ステータス = "外出中" でしょうか?

unname1
質問者

お礼

補足の回答をありがとうございます、解決の手がかりがつかめたように思います。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.3

こんな感じではいかがでしょうか? SELECT 社員名テーブル.社員名フイールド FROM 社員名テーブル,外出中社員情報テーブル WHERE 社員名テーブル.社員コード = 外出中社員情報テーブル.社員コード AND 外出中社員情報テーブル.ステータス = '外出中' 「社員名テーブルと外出中社員情報テーブルを社員コードで連結させ、  外出中社員情報テーブルのステータスが'外出中'のデータのみ抽出」 というSQL文です。

unname1
質問者

お礼

回答ありがとうございます、解決の手がかりがつかめたように思います。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • clavia
  • ベストアンサー率50% (5/10)
回答No.2

相手のデータベースにもよりますが、以下の SQL 文でいかがでしょうか? select 社員名フィールド from 社員名テーブル as A   left join 外出中社員情報テーブル as B on B.社員ID = A.社員ID where B.外出中フラグ = 1

unname1
質問者

お礼

回答ありがとうございます、解決の手がかりがつかめたように思います。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> SQL文を長くして一文にまとめる サブクエリ(副問合せ)で良いのでは? 具体的にはどのようなSQLなんでしょうか? 文末に「継続指定」があると改行していても良いのですが。 strMySQL = "select 氏名コード,氏名 from tbl社員 " _ & "where 氏名コード in (" _ & " select B.氏名コード from tbl異動履歴 " _ & " where b.何かの条件 " _ & ");" のような書き方も有りです。

unname1
質問者

補足

早速の回答ありがとうございます >具体的にはどのようなSQLなんでしょうか? SQLといいますか、(そもそもSQLで処理をすることが正しいかの判断もつかないのですが。)したい処理は下記のような内容です。 VBのデータコンボボックスに「社員名テーブル」の「社員名フイールド」を表示したいのですが、ここに表示する社員名を「外出中社員情報テーブル」を検索して外出中の社員だけ表示したいのです。 処理方法自体が試行錯誤の段階なのですが、現時点では上記方法で抽出したビューかテーブルをデータコンボボックスに表示しようと思っているのですが、データコンボボックスではうまく実現できないように感じています いずれにせよ社員名テーブルから外出中をキーワードにして社員名を絞り込む作業をしなくてはいけないと思っているのですが・・・。 もし、根本的に考え方が間違っているようでしたら「その処理の場合は私ならこうする」という考え方だけでも示していただければと思います。

すると、全ての回答が全文表示されます。

関連するQ&A