Problème :
Vous disposez d'une table associative dans laquelle les éléments peuvent appartiennent à plusieurs catégories. Comment sélectionner uniquement les éléments qui appartiennent à un ensemble spécifié de catégories ?
Solution :
Pour sélectionner des éléments qui satisfont plusieurs valeurs spécifiques pour une colonne, il existe deux approches principales dans MySQL :
Méthode d'auto-jointure :
Cette méthode compare plusieurs lignes de la même table en une seule opération de jointure. Par exemple, pour sélectionner des éléments dans les catégories 201 et 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
Méthode GROUP BY :
Cette méthode regroupe les lignes par colonne et utilise COUNT() agréger pour vérifier si un élément appartient à toutes les catégories spécifiées. Par exemple, pour sélectionner des éléments dans les catégories 201 et 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
Le choix entre ces deux méthodes dépend du nombre de catégories que vous recherchez et de considérations de performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!