1

基本的なmysqlデータベースがあり、phpをAndroidアプリケーションへのWebサービスとして使用しています。私のアプリには 21 のカテゴリがあり、それらをデータベースの Mysql SET として列に保存しています。記事には複数のカテゴリを含めることができます。

ユーザーに 1 つ以上のカテゴリを選択させます。現在、選択したすべてのカテゴリをハードコードされた「文字列」値として送信し、次のようにすべてを連結しています。

SELECT * FROM ........... WHERE cat LIKE '%$cat1%' OR cat LIKE '%$cat2%'

ご想像のとおり、これは非常に低いプロセスです。

これを行う正しい方法は何ですか?

4

2 に答える 2

0

カテゴリテーブル、アーティクルテーブル、および外部キーのみを使用するユニオンテーブルを作成して、複数のカテゴリでアーティクルを検索します。

于 2013-02-20T00:03:14.157 に答える
0

これを行う最も正しい方法は、スキーマを少し再設計して、、、、およびの3つArticleのテーブルを作成することです。最初の2つのテーブルは、期待どおりのものです(記事-カテゴリデータ、およびセットの内容)。3番目のテーブルは、一意のarticleID-categoryID関係をマップします。次に、参加するのは簡単です。CategoryArticleCategories

SELECT * FROM Articles JOIN ArticleCategories USING (articleID)
    JOIN Categories USING (categoryID)
WHERE
    catName LIKE '%$cat1%' OR catName LIKE '%$cat2%'

LIKEまた、ユーザーが入力するのではなく、指定したカテゴリを選択する必要があることを示唆しているように見えるため、なぜ使用する必要があるのか​​は少しわかりません。を使用していない場合は、カテゴリリストLIKEに使用できます。 IN

于 2013-02-20T00:03:41.863 に答える