-1

(編集)

テーブル "会社": 会社 -> "LTD の例" カテゴリ (Varchar) -> "1,2,3,4"

訪問者がカテゴリ番号「1」の企業を表示することを選択すると、「例 LTD」が表示されます (2、3、および 4 にも表示されます)。

SELECT * FROM company WHERE カテゴリ (たとえばカテゴリ番号 1 を含む) を使用したい

4

1 に答える 1

3

SELECT * FROM companies WHERE categories IN (1,3,6,9)

PHP で IN リストを動的に生成できます。

$cats = join(',',$categories);  
$sql = "SELECT * FROM companies WHERE id IN ($cats)";

ただし、$categories 配列が汚染されていないことを確認してください (MySQL インジェクションを防ぐため、安全なデータのみが含まれています)。

アップデート

カテゴリを 1 つの CSV フィールドに保存していますか? 痛い!

ユーザーが 1 つのカテゴリしか選択できない場合は、FIND_IN_SET を使用します。

SELECT * FROM companies WHERE FIND_IN_SET(categories,1)

複数のカテゴリでは、そのようなことはありません。ループを使用して、 で区切られたさまざまな FIND_IN_SET を生成しANDます。

データを正規化してください:

テーブル会社を作る:

  • 会社ID
  • 会社名

カテゴリのリンクテーブル:

  • リンクID
  • 会社ID
  • カテゴリー
于 2012-07-05T12:39:40.970 に答える