質問する
0

BASE/クエリの中の検索用語をフォームから指定したい

質問日 2019-08-06 16:54:09 +0200

雪花 のGravatar画像

updated 2019-08-07 09:46:14 +0200

nogajun のGravatar画像

以下のSQLがクエリの中にあります。

 SELECT "食材"
 FROM "料理と食材" 
 WHERE 'サラダ' IN ("料理1","料理2","料理3","料理4","料理5")

これは、以下のテーブルから、

画像の説明

以下の結果をクエリで求めるものです。 サラダを作るための食材を探します。

画像の説明

やりたいことは、 BASEのフォーム側に作成した、テキストボックス(リスト)から料理を選択したら 上記のSQL内の 'サラダ' の場所に、それが 代入されるSQLの記載方法 です。

よろしくお願いします。 できれば HSQLDBFIREBIRD の両方で使用できるものが助かります。

edit retag flag offensive close merge delete

1 Answer

1

回答日 2019-08-07 00:37:43 +0200

雪花 のGravatar画像

updated 2019-08-07 19:29:27 +0200

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

SQLって、WHEREの部分を入れ子にできるんですね。
どこにもその解説を見つけられずに苦労しました。。

最初は、クエリのSQLの中に、 表計算で使用するIF関数(IIFではなく)を書き込む方法はないのだろうか?と考え、 あちこち調べて嵌りまくってたのですが見つからず疲れ果ててしまいました。

煮詰まって嫌になり、諦めた後、ボーっと他の話題を眺めていたら。 WHEREの入れ子を~という言葉を見つけ、 ダメもとで以下を書いてみたら、あっけなく成功しました。

手順は以下です。

  1. "料理名検索" という、1列(1フィールド)のみのテーブルを作成。
  2. "料理名検索" の中に、"料理名"というフィールドを作成。
  3. "検索フォーム" という、1つのテキストボックスを作成したフォームを作成。
  4. 上記(3)のテキストボックスに "料理名" を記入すると、(2)の1行目が書き換わるようにする。

その上で、以下のSQLを記載したクエリを作成。

 SELECT "食材"
 FROM "料理と食材" 
 WHERE (
     SELECT "料理名" 
     FROM "料理名検索"
     )
     IN ("料理1","料理2","料理3","料理4","料理5")

ちなみに FIREBIRD でも HSQLDB でも同じように動いてくれました。 FIREBIRD 側の中の全ての関連フィールドは VARCHAR で統一しています。

edit flag offensive delete link もっと
ログイン/サインアップして回答する

質問ツール

2 followers

Stats

Asked: 2019-08-06 16:54:09 +0200

Seen: 17 times

Last updated: Aug 07