- - PR -
条件を変えて複数のSQL文を一度に発行
1|2|3
次のページへ»
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2005-10-18 19:02
C#でプログラムをしています。
select * from customer_MST where customerCode = '123' select * from customer_MST where customerCode = '963' select * from customer_MST where customerCode = '741' と、同じテーブルで同じフィールドに対して条件を変えて複数のSQL文を 一度に発行し、結果をまとめてデータセットにしたいのですが、 ↑の例の用にすると何度もDBにアクセスする事になるかと思います。 まだプログラミング初心者なのですが、 これはよくないと思い、 何か良い方法があればお教えいただきたいと思い、投稿させていただきました。 皆様の書き込みの中で最も低レベルな質問かと思いますが、 何卒よろしくお願いいたします。 | ||||
|
投稿日時: 2005-10-18 19:14
同一テーブルで条件が違うなら、結果のデータテーブルは1つでいいような気がするのですが、
どうしても、複数のデータテーブルを取得したいのでしょうか? select * from customer_MST where customerCode in ('123', '963', '741') | ||||
|
投稿日時: 2005-10-18 19:18
過去投稿から推察するところ、.Netでしょうか?(データセット→DataSet?)
まずは使用している言語、又は環境等を(前提条件があれば)提示された方がよいですよ。 # なんとなく「Database Expert会議室」というよりは「Insider.NET会議室」の方が適切なような気が...します。(^^; [ メッセージ編集済み 編集者: えんぞ@? 編集日時 2005-10-18 19:19 ] | ||||
|
投稿日時: 2005-10-18 19:28
こんにちは、でっちです。
burton999さんがINを使う方法を書かれているので、あと一つORを使う方も書いておきますね。 select * from customer_MST where customerCode = '123' or customerCode = '963' or customerCode = '741' 単純にSQLについての質問のように見受けられました。 @ITで言えばSQL実践講座等は初級者向きで分りやすいと思いますので、ぜひご一読下さい。 また、参考書籍なども書かれているので、こちらのスレもご覧下さい。 SQLを質問される方へのアドバイス | ||||
|
投稿日時: 2005-10-18 19:41
もっと条件が複雑な場合にはUNIONって手もありますね。
| ||||
|
投稿日時: 2005-10-19 10:16
皆様、ご回答ありがとうございます。
自分自身、書き込んでいて「こんな意味不明な文章で通じるのか」という 疑問を持っていましたが、情報をほとんど提示していないにもかかわらず、 私の求める考え方をお教えいただき、誠に感謝しております。 burton999さんがご提示くださった、 select * from customer_MST where customerCode in ('123', '963', '741') の方式でやってみたいと思います。 頑張って私も皆様のレベルに達したいと思いました。(何年後でしょうか。。) さて、私の質問はまさに、でっち6号さんがおっしゃるように、 「単純にSQLについての質問」かと思います。 スレ違い甚だしいのにもかかわらず、丁寧にご対応いただき、うれしい限りです。 (今後は、書き込む場所をしっかりと考えます。) ただ、よろしければもう少しだけ質問させていただいてよろしいでしょうか? 以下に質問を貼り付けますので、もし「他の場所に書き込むべき」とのご指摘があれば すぐに移動いたします。 環境:VS.NET2003とSQLSERVER2000です。C#で開発を始めました。 質問: select * from customer_MST where customerCode in ('123', '963', '741') というSQL文でcustomer_MSTのcustomerCodeが123、963、741のレコードを取得できるようになりました。 ただ、以前質問させていただいた際にはテーブルが一つだったのですが、 今回、二つテーブルが追加になりました。 合計3つのテーブルで上記の結果を求めたいです。 それぞれのテーブルにはcustomerCodeがあるので、 これを抽出条件にできればと考えました。 customer_MST.customerCode test_MST.customerCode set_MST.customerCode 以前burton999さんにお教えいただいたSQL文、 select * from customer_MST where customerCode in ('123', '963', '741') の条件部分を以下のように変更してみました。 select * from customer_MST, test_MST, set_MST where customer_MST.customerCode in ('123', '963', '741') and test_MST.customerCode in ('123', '963', '741') and set_MST.customerCode in ('123', '963', '741') order by customer_MST.customerCode これで取得すると、エラーにはならないのですが、 customerCodeが重複して取得してしまいます。 (同じcustomerCodeでもあるフィールドの値が違ったり(そのような値に覚えはないのに)) in ('123', '963', '741')の部分を in ('123')としますと、私の考えどおり、1レコードのみを取得できます。 取り留めの無いお話ですが、どうにかしてやり遂げると決めています。 更に低レベルで、このような有名な掲示板で相談するのは とてもおこがましいですが、周りに相談できる方がいらっしゃらず、 相談させていただきました。 何卒何卒、お力をお貸しください!!! 何か上記文章内で、問題があればご指摘ください! | ||||
|
投稿日時: 2005-10-19 10:28
同じ構造のテーブルならば UNION ALL とか使っちゃ駄目なんでしょうか?
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-10-19 10:34
customer_MST test_MST set_MST の結合条件はないのですか? #直積がほしいのです? こんな感じでは?と思ったのですが・・・。 customer_MST.customerCode = test_MST.customerCode and test_MST.customerCode = set_MST.customerCode and customer_MST.customerCode in ('123', '963', '741') とかでは要件は満たせないでしょうか? [ メッセージ編集済み 編集者: 夏椰【SUICA】 編集日時 2005-10-19 10:36 ] | ||||
1|2|3
次のページへ»
