問題:
項目を指定できる連想テーブルがあります。複数のカテゴリに属します。指定したカテゴリのセットに属する項目のみを選択するにはどうすればよいですか?
解決策:
列の複数の特定の値を満たす項目を選択するには、次の方法があります。 MySQL の 2 つの主要なアプローチ:
自己結合メソッド:
このメソッドは、1 回の結合操作で同じテーブルの複数の行を比較します。たとえば、カテゴリ 201 と 202 のアイテムを選択するには:
SELECT c1.item_id FROM item_category AS c1 INNER JOIN item_category AS c2 ON c1.item_id = c2.item_id WHERE c1.category_id = 201 AND c2.category_id = 202
GROUP BY メソッド:
このメソッドは列ごとに行をグループ化し、COUNT() を使用します。アイテムが指定されたすべてのカテゴリに属しているかどうかを確認するために集計します。たとえば、カテゴリ 201 と 202 の項目を選択するには:
SELECT c.item_id, COUNT(*) AS cat_count FROM item_category AS c WHERE c.category_id IN (201,202) GROUP BY c.item_id HAVING cat_count = 2
これら 2 つの方法のどちらを選択するかは、検索するカテゴリの数とパフォーマンスの考慮事項によって異なります。
以上がMySQL で複数のカテゴリに属する項目を選択するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。