1

私が所有しているすべてのDVDを作成したいウェブサイトを作成することになっています。さらに、映画をカテゴリーに分類したいと思います。私はこれらのテーブルを手に入れました。

カテゴリ: id-タイトル

映画: id-category_ref-など......

いくつかのカテゴリを作成したと想像してください:(アクション-ID:1、コメディ-ID:2)

管理パネルで映画を作成するとき、チェックボックスを使用してさらに多くのカテゴリを選択する機会があります。たとえば、スパイダーマンのアクションとコメディを選択できます。

移動の行は次のようになります。

ID:1- category_ref:1/2(<-アクション/コメディを意味する)

それで、フロントページで-私はスパイダーマンがアクションとコメディの両方の下に表示されることを望みます。

INを使用して映画を適切なカテゴリに分類できると思いましたが、期待どおりに機能しません。

"SELECT id, movie_title FROM film WHERE $catID IN((REPLACE(category_ref, '/', ','))"

質問は複雑に見えるかもしれませんが、そうではありません。

4

2 に答える 2

3

ムービーに複数のカテゴリを追加する場合は、それを格納する 3 つ目のテーブルが必要です。

Categories: id, title
movies: id, title
movie_categories: movieID, categoryID

その後、あなたが持つことができます

//categories
1 Action
2 Comedy

//Movies
1 Spiderman

//movie_categories
1 1   //connection between movieID 1 and categoryID 1 (spiderman & action)
1 2   //connection between movieID 1 and categoryID 2 (spiderman & comedy)

そして、あなたは検索することができます

SELECT id, title FROM movies WHERE ID IN(SELECT movieID FROM movie_categories WHERE categoryID=$catID)
于 2012-12-07T12:46:44.073 に答える
2

この状況では、FIND_IN_SET関数を使用する必要があります。

WHERE FIND_IN_SET($catID,(REPLACE(category_ref, '/', ','))>0

ただし、この方法でテーブルをまだ設計していない場合は、2 番目のテーブルを使用してmovie-categoryリレーションを保存します (@Hugo_Delsing の回答を参照)。

于 2012-12-07T12:53:11.633 に答える