2011-07-02 9 views
1

さてさて、私はいくつかの研究を行い、優れた正規化された記事とタグテーブルは次のようでなければならないことを見出した:今データベースから複数のタグを取り出す方法は?

articles table: article_id | article_text 

tags table: tag_id | tag_text 

article-tag table: article_id | tag_id 

、私は何をしようとすると、これは次のとおりです。のは、私は3個のタグを探していますと言ってみましょうたとえば、 "asp.net"、 ".net"、 "c#"などです。これらのタグを持つ記事を検索することは非常に簡単です。しかし、私はこれを望んでいません。私が欲しいのは正確これら3個のタグまたはそれらを含む4個の以上のタグを持つ2つまたはそれらの1ではなく、記事が掲載されています記事を取得することです。私は "asp.net"、 ".net"、 "c#"、 "ruby"で検索結果を望んでいません。私はタグ付き記事だけを欲しいです:

"asp.net", ".net", "c#" 

.net", "c#" 

"asp.net", ".net" 

"asp.net", "c#" 

"c#" 

"asp.net" 

".net" 

これに対して、正しいMySQLクエリは何でしょうか?

+0

おそらく、(許容可能なタグのリストから)一致するタグを数え、その数が2または3であることに基づいて選択する補助機能を作ってください。 –

+0

私はそれも考えて、本当に一致するタグを数えなければならないと結論づけます。それが最初のステップですが、残りはどうですか? 途中で投稿を編集していただきありがとうございます(私は初心者です:))。 – oguzkonya

答えて

0

私はself joinが方法かもしれないと思っています。 3つのタグでクエリを実行していた場合は、たとえばarticleタグテーブル自体を3回結合します。しかし、どのように拡大するのかは分かりません。

更新:この方法では、2番目のクエリを実行して、> 3個のタグを含む一致を除外する必要があります。

+0

それでは、6つのタグを検索すると、記事タグテーブルに6回参加します。最適化されていますか?私はそれが正しい方法であることを意味しますか? – oguzkonya

関連する問題