2

可能であれば、次のmysqlクエリを微調整したいと思います。

SELECT * FROM artists,tags WHERE tags.tag_title LIKE '$q' AND artists.art_id=tags.art_id
  • $qユーザーが入力したキーワードです
  • アーティストは、アーティストの基本情報が記載されたテーブルです
  • タグは、アーティストに関連するキーワードのテーブルです(アーティストは複数のキーワード(またはフレーズ)を追加でき、各キーワードは異なる行に保存されます)

このクエリtags.tag_titleでは、完全な検索と一致する必要があります。たとえば、「オルタナティブロック」は、テーブルタグに「オルタナティブロック」というキーワードを持つすべてのアーティストを表示します。大丈夫です。

つまり、「オルタナティブロック」というキーワードについては、「オルタナティヴ」と「ロック」というキーワードがテーブルタグの異なる行にあるアーティストも表示したいのですが、「オルタナティヴ」と「オルタナティヴ」というキーワードを持つアーティストは表示したくないということです。 「メタル」または「インディー」と「ロック」をキーワードにしたアーティスト。

それは理にかなっていますか?

4

2 に答える 2

0

あなたはこのようなものを探します、

 SELECT * FROM artists
 INNER JOIN tags 
 ON artists.art_id=tags.art_id
 WHERE tags.tag_title LIKE '% $q1 %' OR  tags.tag_title LIKE '% $q2 %'

q1とq2はkeyword1とkeyword2です

于 2013-01-31T18:27:36.633 に答える
0

明らかにこれは単なる例ですが、次のようなものを求めていると思います:

SELECT * FROM artisits artist LEFT JOIN tags tag ON tag.artist_id = artist.id WHERE artist.name LIKE '$q' OR tag.name = $q
于 2013-01-31T18:30:57.610 に答える