(編集)
テーブル "会社": 会社 -> "LTD の例" カテゴリ (Varchar) -> "1,2,3,4"
訪問者がカテゴリ番号「1」の企業を表示することを選択すると、「例 LTD」が表示されます (2、3、および 4 にも表示されます)。
SELECT * FROM company WHERE カテゴリ (たとえばカテゴリ番号 1 を含む) を使用したい
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
ます。
テーブル会社を作る:
カテゴリのリンクテーブル: