SQLのselect文作り方で困っている方への解決方法
- C#2010で作ったアプリからsqlサーバー2008のデータベースにselect文を発行する方法に困っています。
- 検索キーワードの組み合わせでselect文を発行する際に困っています。例えば、検索キーワード A、B、Cの3つとすると、7種類のselect文を作るのが煩雑です。
- 1つのselect文で複数の検索キーワードを処理する方法を教えてください。
- ベストアンサー
sql select文の作り方で困っています
C#2010で作ったアプリ から sql サーバー2008のデータベースにselect文を発行する際に困っています 検索キーワードが3つあるのですが、3つのキーワードの組み合わせでselect文を発行したいのですが、種類がたくさんできてしまい 困っています 例えば、検索キーワード A、B、Cの3つとすると、以下の組み合わせで7種類ものselect文を作るのが煩わしいです GetData(A) GetData(B) GetData(C) GetData(A,B) GetData(A,C) GetData(B,C) GetData(A,B,C) これらを1つのselect文でさばくには、どうすれば良いでしょうか? ご指導よろしくお願いいたします
- gin57773222
- お礼率69% (18/26)
- SQL Server
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
select * from table where (A = 'inputed A ' or 'inputed A ' is null ) and (B = 'inputed B ' or 'inputed B ' is null ) and (C = 'inputed C ' or 'inputed C ' is null ) ただし、SQL Serverは null と ''は別扱いだったと思うので、 入力された結果が、''なら、is null は = '' としてください。 'inputed A '、'inputed B '、'inputed C 'は入力された文字列を直接編集してもいいし、 ホスト変数にしてパラメタ渡しにしてもいいです。
その他の回答 (1)
- すもあん(@ryoyama)
- ベストアンサー率56% (45/80)
検索キーワードを"キーワードA"、"キーワードB"、"キーワードC"とすると、 SELECT * FROM テーブル名 WHERE 検索対象カラム like '%キーワードA%' or 検索対象カラム like '%キーワードB%' or 検索対象カラム like '%キーワードC%' 検索対象カラムに"キーワードA"か"キーワードB"か"キーワードC"を含む、という条件となりますが、これでどうでしょうか?
お礼
ありがとうございます ためになりました
関連するQ&A
- こんなSQL文
Oracle8.1.7を使用しております。 以下のようなテーブルに対し、1行目と2行目を削除するSQL文を書きたいのですが、思いつきません。どなたか、アドバイスいただけないでしょうか? 表名:A B | C ―――――――― 2 | 10 2 | 1 1 | 10 1 | 1 1 | 11 1 | 2 1 | 1 3 | 10 2 | 3 変数として、P1=1とP2=2があります。(これは、SQL文の中に直接書くものとします。) ここで、SELECT B,C FROM A WHERE B=1;とSELECT B,C FROM A WHERE B=2;を実行すると、次のようになります。 B | C B | C ――――――――― ――――――――― 1 | 10 2 | 10 1 | 1 2 | 1 1 | 11 2 | 3 1 | 2 1 | 1 ここで、それぞれの表を見ると、Cの値が一致している部分があります。この一致していて、Bが2の行を削除したいのですが、SQL1文では無理でしょうか? 最近、SQLには慣れてきたつもりだったのですが、こんなとこでつまずくとは・・・どうぞよろしくお願いします。
- ベストアンサー
- その他(データベース)
- SQL(SELECT文)を教えてください
SQL Serverを勉強中です。 以下のようなテーブルに、同一の日付に複数の名称・値のセットが存在します。 Date(日付) Name(名称) Value(値) 20130101 a 10 20130101 b 20 20130101 c 30 20130202 a 5 20130202 b 10 20130202 c 15 このデータを、SQLのSELECT文で取得し、以下のような表を作りたいと考えています。 a b c 20130101 10 20 30 20130202 5 10 15 行が日付、列が名称になっています。 このように取得できるSQL文を教えてください。よろしくお願いします。
- ベストアンサー
- SQL Server
- SQL文がわかりません。
SQL文がわからなく困っております。 下記のデータ*01を*02のデータのようにSELECTするためには、 どのようなSQL文を書けばよいのかお教えいただけますでしょうか? DBはoracle11gです。 ※01 ID 所属部署 _____________________________ 1 a 1 b 2 a 2 b 2 c 3 a 3 b 3 c 3 d ____________________________ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ※02 ID 所属部署 所属部署2 所属部署3 所属部署4 _________________________________________ 1 a b 2 a b c 3 a b c d
- ベストアンサー
- Oracle
- 検索が速くなるSQL文を教えてください
データベースに、例えば辞書に載っている単語が1000万件分入っているデータベースがあるとします。 このデータをあいうえお順に昇順にソートした上で、500万番目から30個のデータ(つまり、5,000,000番目~5,000,029番目)までのデータを取り出したいです。 このようなケースで検索がもっとも高速になるSQL文の書き方はどのような描き方になるのでしょうか? SELECT keyword FROM table ORDER BY keyword OFFSET 5000000 LIMIT 30 と書いたのですが、すごく遅いです。OFFSETが0であればとても速いです。
- 締切済み
- SQL Server
- SQL SELECT文について
SQL、データベース関連の領域で、SELECT文の構文を学習しています。 WHEREの後の条件に使われる式として、以下の記載があるのですが、 具体例として、SELECT文があっての説明が無いので、式の意味、SELECT文 に、どのような形で出てきて、どのように解釈したらいいかの知識を習得出来 ません。御教授下さいますよう、御願い申し上げます。 LIKE"_野菜%" (意味) "野菜"を含む文字列。_は一文字、%は任意文字数のワイルドカード 宜しくお願い致します。
- ベストアンサー
- 経営情報システム
- PostgresSQL のSQL文について(SELECT) :2
テーブル図があまりにもずれているため投稿しなおします。 PostgresであるSelect文がわかりません。 以下のテーブルより *KOUMOKU*[テーブル名] SUB1|SUB2|SUB3|SUB4|SUB5|ID_NAME A01 | | | | |大項目1 A01 |B01 | | | |大項目2 A01 |B01 |C01 | | |大項目3 A01 |B01 |C01 |D01 | |大項目4 大項目1~大項目4の値(ID_NAME)を一気に取得する SELECT文がわかりません。 「大項目1 大項目2 大項目3 大項目4」という検索結果を得たいです。 よろしくお願いいたします。
- ベストアンサー
- その他(データベース)
- SQL文で統計表を作りたい
お世話になります。 SQL文(SQLPLUS)で統計表を作りたいと思っています。 (PL/SQL可) 可能でしょうか? <販売履歴テーブル> 販売店 販売日付 販売時刻 A 2008/05/20 10:00 A 2008/05/20 15:00 A 2008/05/20 18:00 A 2008/05/21 11:00 A 2008/05/21 12:00 A 2008/05/21 15:00 A 2008/05/22 10:00 B 2008/05/20 09:00 B 2008/05/20 11:00 B 2008/05/21 10:00 B 2008/05/21 15:00 B 2008/05/21 17:00 C 2008/05/20 10:00 C 2008/05/20 11:00 C 2008/05/20 14:00 C 2008/05/21 10:00 販売店、販売日付にて件数を一覧表示させたい <SELECT結果> A B C 2008/05/20 3 2 3 2008/05/21 3 3 1 2008/05/22 1 0 0 ちなみにデータベースはOracle10gです。 よろしくお願い致します。
- ベストアンサー
- Oracle
- 【再】2)-SQL文の書き方を教えてください。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=694458 先日この問題で投稿しましたが、未完成のため、再度要望を整理し、ご指導をお願いいたします。 W←tabel名:名称、日付、数量 明細データ: 名称 日付 数量 A 2003/10/01 200 B 2003/10/03 500 C 2003/10/10 4000 A 2003/10/03 200 A 2003/10/03 100 C 2003/10/15 100 B 2003/10/15 300 C 2003/10/15 50 B 2003/10/15 60 求めているクエリーのイメージ: 2003/10/15 時点 ================================================ 名称 当日数量 当月数量 A 0 300 B 360 860 C 150 4150 ------------------------------------------------- 先日教えてもらったSQL文、希望のクエリーを作れないです。 -------------------------------------------------- select 名称, sum(AAA) as 当日数量, sum(BBB) as 当月数量 from ( select 名称, 0 as AAA, sum(数量) as BBB from W where 日付 >= #2003/10/01# and 日付 <= #2003/10/15# group by 名称 union select 名称, sum(数量) as AAA, 0 as BBB from W where 日付 = #2003/10/15# group by 名称 ) group by 名称; このSQL文は、2番目のSelectのところでエラーが出る (From句の構文エラーです) -------------------------------------------------- 後、Accessバージョンによって、SQL文が変わるでしょうか?当方は、Access97を使っている。 ご指導をお願いいたします。
- ベストアンサー
- Visual Basic
- セレクト文について
sqlのセレクト文について質問させて下さい。 フィールドのレコードに、a,b,c,d,eと登録されているデータから、"c"のデータだけをセレクト対象にしたい場合、どのようにsqlを書けばよいのでしょうか? 通常のセレクト文だと、WHERE句に、(フィールド名 = '値')などで格納されている値とデータの比較ができるかと思うのですが、上記のような場合はどのように指定するのでしょうか? フィールドを無駄に増やし過ぎないよう、カテゴリごとに配列をjoinでまとめたものをDBへ登録しているのですが、この場合だとイメージしているようなことは無理なんでしょうか? 宜しくお願い致します。
- ベストアンサー
- PHP
お礼
ありがとうございます ためになりました