0

各レコードに割り当てられた「キーワード」の 5 つのフィールドがあります。

共通のキーワードを共有するレコードのみを選択して識別するクエリを作成したいと考えています。

つまり、「5 つのフィールドのいずれかに「環境」というキーワードが含まれていないレコードを表示してください」というようなものです。

私はこれにかなり慣れていないので、少しイライラしています。

助けてくれてありがとう!

4

1 に答える 1

1
SELECT
  * -- or whatever fields you need
FROM tablename
WHERE
  keyword1='environment' -- maybe keyword1 LIKE '%environment%'
  OR keyword2='environment'
  OR keyword3='environment'
  OR keyword4='environment'
  OR keyword5='environment'

そうは言っても、DB 構造を再考する必要があります。これを行う標準的な方法は、テーブル、キーワード テーブル、および結合可能なテーブルを用意することです。

  • あなたのテーブルにはIDがあります
  • キーワード テーブルにはキーワードと ID があります
  • ジョイント可能には yourtable.ID と keyword.ID があります

こうすればできる

  • レコードに任意の数のキーワードを添付する
  • キーワードに一貫性を持たせる (「劇場」と「劇場」)
  • キーワードの国際化への扉に足を踏み入れる
  • 最初に使用したクエリを削除します。現在は次のようになっています

.

SELECT
  yourtable.*
FROM yourtable
INNER JOIN yourtable_keywords ON yourtable.ID is yourtable_keywords.yourtableID
INNER JOIN keywords ON keywords.ID is yourtable_keywords.keywordID
WHERE keywords.keyword='environment'
于 2013-05-22T13:49:12.823 に答える