Question

Quelle est la meilleure façon d'interroger MySql quand je veux la requête retourne toutes les lignes où au moins une valeur dans une liste de valeurs correspond à au moins une valeur dans une liste de valeurs?

exemple

Si ma table contient les lignes suivantes:

name         groups
item1        gr1, gr2
item2        gr1,gr2,gr3
item3        gr1,gr3

Et j'ai une liste de valeurs: "GR3, GR4, GR5"

Je veux trouver toutes les lignes de ma table qui ont au moins l'une des valeurs GR3, GR4 ou GR5 dans son domaine de groupes.

Ainsi, la requête dans ce cas devrait revenir item2 et item3

Comment puis-je construire une requête efficace sans boucle dans mon script?

Était-ce utile?

La solution

Personnellement, je suggère ce n'est pas la meilleure façon de structurer votre base de données. J'aurais une table de lien, quelque chose comme item_groups qui détiendrait une ligne pour chaque liaison groupe d'articles, de sorte que ce que vous avez il y aurait:

item_name         group_name
item1        gr1
item1        gr2
item2        gr1
item2        gr2
item2        gr3
item3        gr1
item3        gr3

De cette façon, vous pouvez simplement faire

SELECT item_name FROM item_groups WHERE group_name IN ('gr3','gr4','gr5');

est ce qu'on m'a appris quand je couvrais la théorie de base de données dans le cadre de mon baccalauréat ès sciences, et alors qu'il ne résulte en plusieurs tables, il rend la recherche beaucoup plus rapide et plus facile. HTH

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top