質問する
0

SQLで複数列から同じワードを一括検索する方法

質問日 2019-08-06 00:29:42 +0200

雪花 のGravatar画像

updated 2019-08-07 10:00:18 +0200

nogajun のGravatar画像

複数列から1つのキーワードで検索したいのです。

文中の画像は CALC で作成していますが、BASE だと思ってください。 例えば以下のようなテーブル("料理と食材")があるとします。

画像の説明

これに対するクエリで

SELECT "食材"
FROM "料理と食材" 
WHERE "料理1" = 'サラダ' 
    OR "料理2" = 'サラダ' 
    OR "料理3" = 'サラダ' 
    OR "料理4" = 'サラダ' 
    OR "料理5" = 'サラダ'

とすると、

画像の説明

が得られます。ですがこの

WHERE "料理1" = 'サラダ' 
    OR "料理2" = 'サラダ' 
    OR "料理3" = 'サラダ' 
    OR "料理4" = 'サラダ' 
    OR "料理5" = 'サラダ'

'サラダ'を繰りかえし書くのが面倒です。

これをGROUP BY 関数などで、1度の記載で済ませることはできないでしょうか? それともこの関数は、集計などの時にしか使用できないのでしょうか?

できれば、HSQLDBFIREBIRD の両方で知りたいです。

edit retag flag offensive close merge delete

1 Answer

1

回答日 2019-08-06 16:27:47 +0200

雪花 のGravatar画像

updated 2019-08-07 09:59:51 +0200

nogajun のGravatar画像

この件、自己解決しました。

以下のようにINを使用すればよいのですね。

 SELECT "食材"
 FROM "料理と食材" 
 WHERE 'サラダ' IN ("料理1","料理2","料理3","料理4","料理5")
edit flag offensive delete link もっと

Comments

次はFORM上で、テキストボックス(リスト)を作成し、
'サラダ' 以外の様々な料理名を選択するたびに、食材が表示されるようにしたいのですが、
その方法がわからずにいます。

WHERE の後ろの 'サラダ' の場所を、動的に入替え(代入?)したいのです。
たぶん、最も基本的な知識なのでしょうが、
皆目わかりません。

別のスレをたてます。

あまりに基本的な質問過ぎて「自分で調べろ」みたいな感じ?でしょうか?
SQLの記載方法に関してはなかなか返信がつきませんが、、

よろしくお願いします。

雪花 のGravatar画像雪花 ( 2019-08-06 16:33:22 +0200 )edit
ログイン/サインアップして回答する

質問ツール

1 follower

Stats

Asked: 2019-08-06 00:29:42 +0200

Seen: 17 times

Last updated: Aug 07