1

キーワード用に設定されたデータベース テーブルがあります。列は -

キーワード ID | キーワード1 | キーワード 2 | キーワード3 | キーワード4 | 質問ID

ユーザーが質問を見つけて編集できるように、Web サイトを介して機能を提供したいと考えています。現在これを行う最善の方法は、ユーザーにキーワードを入力して質問を検索してもらうことだと考えています。私が使うとき

SELECT * FROM keywords WHERE keyword1="first_search_word" 

動作しますが、同じことを試してみると

WHERE keyword2="first_search_word" 

それらが存在していても、何も返しません。OR(or )も使用してみ||ましたが、それについても何も見つかりませんでした。

4

2 に答える 2

4

キーワード 1 に関連するキーワード ID とは何ですか?

とにかく、これはあなたの問題にアプローチする正しい方法ではありません。すべての質問を複数のタグに関連付けることができるタグが必要なようですね。これは多対多の関係と呼ばれ、複数のテーブルが必要になります。必要になるだろう:

  • tagId と tag の 2 つの列を持つタグ テーブル
  • questionId と question の少なくとも 2 つの列を持つ質問テーブル
  • tagId と questionId の 2 つの列を持つ tags_questions 結合テーブル。

どの質問に特定のタグが付いているかを調べるには、まずタグ テーブルで tagId を調べます。次に、 を実行しSELECT questionId from tags_questions where tagId = $tagIdます。特定のタグではなくキーワードに基づいてルックアップを行うには、SELECT questionId FROM tags_questions WHERE tagId IN (SELECT tagId FROM tags WHERE tag LIKE "%{$keyword}%").

于 2012-07-08T00:23:22.430 に答える
1

使用する場合

SELECT * FROM keywords WHERE keyword1="first_search_word"

それは動作しますが、私が同じことを試してみると

WHERE keyword2="first_search_word"

何も返さない

しかし、あなたはまた言います

列はkeywordID、keyword1、ky2、ky3、ky4、questionIDです。

したがって、実際には呼び出される列keyword2がないため、一致するものがないことは驚くことではありません。もちろん、質問にいくつかの値を誤って入力していない限り、その場合は質問を書き直す必要があります

于 2012-07-08T00:28:56.353 に答える