![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
はじめまして。初めて質問させて頂きます。
現在、システムを作成しています(開発が主業務ではありませんが)。
が、作成途中で詰まっていますので、ご教授願えれば、と思い質問させて頂きます。
いくつかの条件(氏名、内容、レベル)をユーザに入力してもらい、その条件に合致しているデータを抽出するSQLを発行したいのですが、なかなかうまくいきません。
現状では、上記3つの条件を全て入力すれば結果が反映されるのですが、1つずつで絞り込むことができません。
例えば、レベルの選択タブで「2」をユーザが選んだ場合、その条件に合致するあらゆる内容のレベル2の人が出てきてほしいのです。
また、内容で「攻撃」を選んだ場合、攻撃のレベルは関係なく全ての条件が出てきて欲しいのです。
カラオケで選曲をする際に機械を使うと思いますが、あのようなものを作成したいのです。
「ゆず」を検索する際に、「ゆ」を入れた時点で「ゆ」から始まるアーティスト名が抽出され、次に「ず」を入れると抽出件数が減ります。
あのような動作はSQLだけで行えるものなのでしょうか。
ネットで検索してもいまいち理解ができません。
どなたかご教授をお願い致します。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>例えば、「ゆ」で始まる文字列が100万件あったとして、「ゆ」「ず」という文字列の並びを検索すると
>該当件数が50万件になる、という検索方法です。
あくまで、Oracle側で行う処理は、前方一致(Like)検索になります。
一般的には、フロントエンドのアプリケーションで、入力項目が変異する都度、
DB検索と検索結果表示を行う仕組みとなります。
入力の邪魔を邪魔しないような非同期検索の仕組みをアプリケーションに組み込めば良いかと。
フロントエンドのアプリケーションをどんな環境・言語で書くのか判らないので、
これ以上の説明はできません。
No.2
- 回答日時:
#1です
おそらく貴方のしたい事はDB(oracle)レベルでは実装できないと思います。
DBを利用するアプリケーション側(たとえばASP+JavaScript)ですれば可能です。
No.1
- 回答日時:
>>例えば、レベルの選択タブで「2」をユーザが選んだ場合、その条件に合致するあらゆる内容のレベル2の人が出てきてほしいのです。
SELEC * from テーブル名 where レベル = '2'
これでレベルが2のレコードはすべて取得できます。
>>「ゆず」を検索する際に、「ゆ」を入れた時点で「ゆ」から始まるアーティスト名が抽出され、次に「ず」を入れると抽出件数が減ります。
SELEC * from テーブル名 where アーティスト名 LIKE 'ゆ%’
これでアーティスト名がゆで始まるレコードがすべて取得できます。
参考までに
最後が「ず」を検索したければ LIKE '%ず’
ゆを含むものは LIKE '%ゆ%'
>>また、内容で「攻撃」を選んだ場合、攻撃のレベルは関係なく全ての条件が出てきて欲しいのです。
内容に入るデータが「殴る」とか「撃つ」「食べる」等が入るとすると
そのままでは抽出できないので、内容を一通り格納するテーブル「内容マスター」みたいなものを作りましょう。
そのテーブルには
ID 内容 内容種別
1 殴る 攻撃
2 撃つ 攻撃
3 食べる 食事
等が格納され
SELEC * from テーブル名 LEFN JOIN 内容マスター ON テーブル名.内容=内容マスター.内容 where 内容マスター.内容 = '攻撃'
にて抽出できます。
この回答への補足
お忙しいところご回答ありがとうございます!
ただ、私の表現が下手なため質問内容がうまく伝わっていないので、補足して質問させて頂きます。
>SELEC * from テーブル名 where アーティスト名 LIKE 'ゆ%’
ここは理解できます。問題は次です。
「ゆ」で始まる言葉の検索方法ではなく、「ゆ」の次に「ず」という文字が続くものを検索したい場合にどうすれば良いか、という質問でした。
例えば、「ゆ」で始まる文字列が100万件あったとして、「ゆ」「ず」という文字列の並びを検索すると該当件数が50万件になる、という検索方法です。
「ゆ」はそのままに、「ゆず」という文字列を検索したい、さらにその先も「か」と入力することで抽出結果が絞り込まれていくようなSQLを打ちたいのです。
表現が稚拙すぎて申し訳ないのですが、どうか内容を理解頂けますようお願い申し上げます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【詳しい方教えて下さい】EXCEL条件に一致する値の複数抽出 9 2022/04/29 10:56
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- 法学 刑法と社会について 2 2022/07/31 01:38
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- Excel(エクセル) エクセル 条件に合う日付に入力された時間数の合計したい 4 2022/06/17 22:18
- その他(ソフトウェア) 特定のpremiere proのファイルが開けなくなりました。 1 2022/11/16 12:31
- Excel(エクセル) Excel 関数 vlookupなどの使い方について質問です。 シート1に品番、商品名、単価、発注条 6 2022/06/15 19:16
- その他(ニュース・時事問題) 刑法と社会について、至急です 3 2022/07/29 15:01
- Java Java 南京錠 2 2023/02/04 11:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【PL/SQL】FROM区に変数を使う方法
-
group byの並び順を変えるだけ...
-
SELECT FOR UPDATE で該当レコ...
-
単一グループのグループ関数で...
-
【SQL】違うフィールド同士の集...
-
「数字で始まらない」ものを抽...
-
phpmyadminでワイルドカードを...
-
where句中のtrim関数について
-
大量レコードをTRUNCATEせずに...
-
引数によってwhere句を切り替え...
-
SQLで条件にヒットしたレコード...
-
PL/SQLでフェッチでNULLの項目...
-
データ
-
AccessのSQL文で1件のみヒット...
-
ORCALE SQL 複数のGROUP BY
-
ACCESS レコードの並び順について
-
SQL*Loader Append
-
トランザクションログを出力せ...
-
アクセスのレポートでレコード...
-
SQLローダーCSV取込で、囲み文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
単一グループのグループ関数で...
-
【PL/SQL】FROM区に変数を使う方法
-
SQL*Loader Append
-
where句中のtrim関数について
-
AccessのSQL文で1件のみヒット...
-
group byの並び順を変えるだけ...
-
アクセスのレポートでレコード...
-
トランザクションログを出力せ...
-
データ
-
SELECT FOR UPDATE で該当レコ...
-
SQLで条件にヒットしたレコード...
-
「数字で始まらない」ものを抽...
-
引数によってwhere句を切り替え...
-
1レコード全てを改行なしで表...
-
BLOB型項目をSQLの検索条件に指...
-
updateで複数行更新したい
-
【SQL】違うフィールド同士の集...
-
osqleditについて
-
レコードの更新履歴について
-
あるカラムに同じ値を持つレコ...
おすすめ情報