ニュース サイトを作成しました: - 記事は日付順にフロント ページに表示されます。まずは最新のもの。- ニュースは、フィールド「id」、「タイトル」、「テキスト」およびその他のフィールドを持つテーブル「ニュース」にあります。- すべての記事には、1 ~ 5 個の関連するタグが付けられています。- タグは、フィールド「id」、「tag」、「article」およびその他のフィールドを持つテーブル「tags」にあります。・「tags」の「article」フィールドは「news」の「id」フィールドに収まります。
ここで、ユーザーに「お気に入りのタグ リスト」にタグを追加する機会を与えたいと考えています。その場合、ユーザーはお気に入りのタグの 1 つを含むニュース記事のみを表示する必要があります。
ユーザー Bob が "barack obama"、"nba"、"new jersey"、"dogs" というタグを気に入ったとします。これら 4 つのタグの少なくとも 1 つを含む記事のみが表示されるはずです。
これを実現する PHP/MySQL スクリプトをどのようにコーディングできますか? 私のデータベース構造は、この目的には十分ではないと思いますか? 次のような DB クエリを作成する必要があります。
"SELECT * FROM news WHERE id IN (SELECT article FROM tags WHERE tag IN ('barack obama', 'nba', 'new jersey', 'dogs'))"
このクエリは長時間実行されますね。私のよりも適切なデータベース構造が必要です。この問題のアイデアはありますか? どの DB 構造が必要で、どのクエリを使用する必要がありますか?
あなたが私を助けてくれることを願っています。前もって感謝します!