質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

2回答

1287閲覧

DropDownList(必須・任意項目)の検索によるSQL文

arpana

総合スコア13

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

1クリップ

投稿2017/12/08 07:13

編集2017/12/08 07:15

お世話になっております。

イメージ説明

DropDownListの検索条件に一致したレコードをGridViewを使って抽出したいです。
「メーカー」「車種」は必須項目で、任意項目はもし条件が入力していれば、検索条件に加えます。
また、「メーカー」が入力されている場合、「車種」の選択項目もそれに合わせて絞り込まれます。
同様に、「色」が決まれば、「価格」が絞り込まれるというように、左の検索条件に合わせて、右の検索条件が絞り込まれます。

sql

1SELECT * 2FROM [テーブル名] 3WHERE 4 メーカー = [] 5 AND 車種 = []

任意条件が入力されていなければ、必須条件のみで検索。
任意条件が入力されていれば、それに合わせて検索。

CASE文を使用するのかと考えたのですが、うまくいきませんでした。
どのようなSQL文を書けば実現できるのか教えていただけないでしょうか。

【環境】
・Windows 7
・SQL Server 2012
・ASP.NET
・C#

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/12/08 12:19

前のスレッドでもお願いしましたけど、db のスキーマを書いてください。あと、各 DropDownList の連動の条件も詳しく。
退会済みユーザー

退会済みユーザー

2017/12/09 03:31

上のコメントで聞いた「各 DropDownList の連動の条件」は前のスレッド https://teratail.com/questions/103811 で紹介した Ajax Control Toolkit の CascadingDropDown では目的に合わないのですか? であれば、前のスレッドでもお願いしましたが、どこがどう合わないのか具体的に書いてください。
退会済みユーザー

退会済みユーザー

2017/12/09 03:39 編集

Ajax Control Toolkit の CascadingDropDown で目的に合うということであれば、DropDownList 側の実装は完了しているのですよね? 違います? 完了しているのであれば、後は GridView 側の実装になると思いますが、それも先のスレッドで私が紹介した http://surferonwww.info/BlogEngine/post/2011/07/17/Showing-records-selected-by-DropDownLists-into-GridView.aspx の応用でできると思います。何が問題なのでしょう? 当該フィールドが NULL 許可になっていてそれへの対応?
arpana

2017/12/11 02:33 編集

お世話になっております。Ajax Control Toolkit の CascadingDropDownの目的に合っており、おかげさまでDropDownListの実装は完了しております。今回の質問はGridView側で、NULL値がある場合とない場合の条件分岐に関する質問でした。
guest

回答2

0

ベストアンサー

「任意条件が入力されていない」という値をどのように表現するのかによりますが、仮に null で表現するとして。
で、各条件が同名のパラメーターに入っている、と仮定して。
こんな感じでどうでしょう。

SQL

1select 2 * 3from 4 [テーブル名] as TBL 5where 6 TBL.メーカー = @メーカー 7and TBL.車種 = @車種 8and (@色 is null or TBL.= @色) 9and (@価格 is null or TBL.価格 = @価格) 10and (@店舗名 is null or TBL.店舗 = @店舗)

「任意条件が入力されていない or 任意条件と一致するもの」という書き方です。

投稿2017/12/08 07:44

alg

総合スコア2019

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

arpana

2017/12/11 02:41 編集

ご回答いただいたSQL文で実現できました。ありがとうございます。 SQL文に加え、 <asp:SqlDataSource>に、CancelSelectOnNullParameter = "false" 任意条件の各DropDownListの<asp:ControlParameter>に、 ConvertEmptyStringToNull="true" DefaultValue="" を加えることで、GridViewでうまく表示させることができました。
guest

0

PHP側で処理します。

if(!empty($_POST["車種"])){
$type="and TBL.車種 =".$_POST["車種"];
}
という具合にして
クエリには
where
TBL.メーカー = $_POST["メーカー"]
$type

としておけば値が入っている時だけ条件文が加えられることになります。
そのほかの条件も同様ですね。

と書いておいて、C#の話でしたね・・・失礼

投稿2017/12/08 08:42

編集2017/12/08 08:47
to.chan.genkida

総合スコア69

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/12/08 12:16

php ではありません。asp.net ですけど。
to.chan.genkida

2017/12/11 00:12

ですね(笑) 早とちりで失礼しました
arpana

2017/12/11 02:42

ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問