私は可能な限り私のケースを説明しようとします。 私はタグを参照してトピックを見つけることができるウェブサイトを作っています。そこには奇妙なことはありません。私はいくつかのクエリで厄介な時間を過ごしています。彼らはあなたのために簡単かもしれない、私の心は仕事の多くをやることからかなり台無しです:P。別のテーブルと同じリレーションを持つテーブルからフィールドを取得します
私はテーブル "topics"と "tags"を持っています。これらは、topic_idとtag_idを含むtags_topicsテーブルを使用して結合されます。ユーザーがトピックを見つけたい場合は、最初にフィルタするタグを1つ選択してから、もう1つをフィルタに追加します。次に、選択したタグの両方を持つすべてのトピックを取得するためのクエリを作成します。彼らはまた、他のタグを持っているかもしれませんが、それらがフィルタリングするために選択されたタグを持っていなければなりません。フィルタリングするタグの量は異なりますが、フィルタリングするユーザーが選択したタグのリストは常にあります。 これは主にFiltering from join-tableで答えられました。私は複数の結合ソリューションを使いました。
これで、ユーザーがフィルタリングできるタグを取得する必要があります。したがって、すでに2つのタグの定義済みフィルタがある場合は、フィルタ内のすべてのタグを含むトピックに関連付けられたタグをすべて取得する必要があります。私は実践的な例を挙げます:P
テニス、ジム、ゴルフの3つのトピックがあります。
- テニスのタグがあります:スポーツ、ボール、コート、ラケットを
- ジムにはタグがあります:スポーツ、トレーニングや筋肉
ゴルフのタグがあります:スポーツ、ボール、スティックと外
- をユーザーはタグスポーツを選択するので、3つのテニス、ジム、ゴルフをすべて表示し、可能な他のフィルタとしてボール、コート、ラケット、トレーニング、筋肉、スティック、アウトを表示します。
- これで、ボールにフィルタが追加されるようになりました。フィルタはスポーツとボールになっていますので、テニスとゴルフのトピックを、裁判所、ラケット、スティック、アウトドアを追加のフィルタとして表示します。
- ユーザーがフィルタに裁判所を追加するようになりました。追加のフィルタとしてテニスとラケットを表示します。
私はなんらかの意味があると思います。ところで、私はMySQLを使用しています。
「他のタグの集まり」ではないタグ1、タグ2、タグ3を特別なものにする理由は不明です。残りは必要ではないのになぜ必要なのですか?これをどうやって知っていますか?それは私たちが仮定できるタグの定義済みのリストですか? – chaos
テーブル構造をいくつか与え、その質問をより詳しく説明したいと思うかもしれません。私はあなたが望むものを手に入れたと思うが、理解する前にそれを5回読んだ。 – achinda99
http://stackoverflow.com/questions/648308/filtering-from-join-tableの正確な複製 –