Recherche des identifiants apparaissant dans des valeurs de colonne spécifiques sur plusieurs lignes
Dans une table associative MySQL, l'identification des éléments présents dans plusieurs catégories spécifiques pose un défi . L'approche initiale utilisant les opérateurs AND et OR est inefficace, car elle ne tient pas compte de l'exigence de présence d'éléments dans toutes les catégories spécifiées.
Pour résoudre ce problème, une technique d'auto-jointure peut être utilisée :
<code class="sql">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</code>
Cette méthode joint deux lignes du tableau pour créer une seule ligne dans l'ensemble de résultats, permettant l'évaluation de plusieurs conditions de catégorie.
Une approche alternative consiste à utiliser GROUP BY :
<code class="sql">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</code>
Cette requête regroupe les éléments par ID et compte le nombre de catégories auxquelles ils appartiennent. La clause HAVING garantit que seuls les éléments présents dans toutes les catégories spécifiées sont renvoyés.
Les deux techniques offrent des solutions efficaces pour rechercher des éléments sur plusieurs lignes avec des valeurs de colonne spécifiques, leurs performances variant en fonction du nombre de catégories interrogées.
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!