1


1

SQLおよびperlを使用して値を検索するフィールドを特定する

私はSQLがあまり得意ではないので、おそらくここでやっていることを達成するためのもっと効率的な方法があることを知っているので、どんな助けでも大歓迎です。 ご意見ありがとうございます。

私は地元の学校の高校向けの短いプログラムを書いています。 この学校では、運転免許証と車を持っているジュニアやシニアは、バスに乗るのではなく、学校に行くことを選択できます。 各ドライバーには正確に1つのスペースが割り当てられ、それらのDLNはドライバーのテーブルの主キーとして使用されます。 車のメーカー、モデル、および色は、ライセンスプレート番号フィールドごとにドライバーテーブルに関連する別の車テーブルに保存されます。

私の考えは、学校の秘書が探している人/ものを入力し、結果のリストを表示できるプログラムのメインGUIに単一の検索ボックスを置くことです。 つまり、彼女はナンバープレート番号、車の色、メーカー、モデル、ドライバーの名前、学生ドライバーのDLN、またはスペース番号を入力している可能性があります。 プログラマーとして、私は彼女が何を探しているのか正確にはわからないので、いくつかのオプションが思い浮かびます。

{空} 1)いくつかのプリフォーム

  SELECT * FROM [tablename]

テーブルごとに1つのSQLステートメントを実行し、プログラムの配列に結果を詰め込み、正規表現を使用して一度に1つの要素を配列全体で検索し、検索用語に類似する一致パターンを探し、見つかった場合はレコード全体を追加します検索の最後に画面に表示する結果配列と一致していました。

2)彼女が探しているものをスケーラーとしてプログラムに取り込み、その周りに複数のselectステートメントを準備します。

  SELECT * FROM DRIVERS WHERE DLN = $Search_Variable
  SELECT * FROM DRIVERS WHERE First_Name = $Search_Variable
  SELECT * FROM CARS WHERE LICENSE = $Search_Variable

など、各テーブルの各属性について、検索が完了したときに画面に表示するために結果を結果配列に貼り付けます。

彼女が探しているものを正確に指定することなく、このルックアップをきれいにする方法はありますか? おそらく私が今まで見たことのないある種のSQLステートメントですか?

2 Answer


1


Sphinx全文検索エンジンの適切なアプリケーションのようです。 Cphinにはhttp://search.cpan.org/perldoc/Sphinx::Search[Sphinx::Search]モジュールがあり、Sphinxのperlクライアントとして使用できます。


1


まず第一に、 `SELECT *`を使用しないでください。http://search.cpan.org/perldoc/DBI#Placeholders_and_Bind_Values [バインド値]を使用する必要があります。

第二に、ユーザーが何を検索しているかを把握する最も簡単な方法は、ユーザーに尋ねることです。 次のようなチェックボックスのセットがあります:

Search among: [ ] Names
              [ ] License Plate Numbers
              [ ] Driver's License Numbers

または、名前に数字が含まれておらず、数字を含む運転免許証番号が表示されていないことに注意できます。 ユーザーが検索しようとしていたものを部分的に推定するために適用できる他のヒューリスティックがあります。

結果を表示するのにOKの仕事をすれば、これはうまくいくかもしれません。

最後に、使用しているデータベースによって提供される検索の可能性を把握し、それらを活用して、ユーザーインターフェイスがデータに触れる前にほとんどの検索が行われるようにします。