Actuellement, il existe trois tableaux, 1 : identifiant du tableau principal des marchandises, nom, prix
2: goods_type 商品类型表 tid name
3: goods_type_map 商品和商品类型关系表 id gid gtid
La structure du tableau précédent est la même que ci-dessus. Désormais, comme le type de produit correspondant peut être un à plusieurs et qu'un produit peut correspondre à plusieurs types, chaque fois que je mets à jour le type de produit, je dois supprimer l'existant. contenu de la table de relations et insérez-en de nouvelles.
tableau des marchandises :
id name price goods_type
1 洗面奶 22 1,8
2 面膜 33 11
tableau goods_type
tid name
1 化妆品
8 护肤品
11 保健品
Je souhaite donc le modifier comme suit : Ajoutez le champ Goods_type à la table principale des produits pour remplacer la table Goods_type_map. Utilisez des virgules pour séparer plusieurs types.
Mais il y a actuellement un problème. Lors de l'interrogation d'un certain type de produit, l'utilisation de la requête Like entraîne souvent des erreurs de requête. Je voudrais donc demander comment gérer cette situation
Utiliser like n'est pas un bon choix. Je recommande une fonction Mysql find_in_set qui devrait être capable de résoudre les besoins de l'affiche originale. Documentation officielle : https://dev.mysql.com/doc/ref...
Vous pouvez également envisager d'utiliser des procédures stockées pour une implémentation récursive, mais cela n'est pas recommandé. La classification infinie en elle-même n'est pas une bonne conception d'expérience utilisateur, sans compter qu'elle augmentera la pression sur le serveur et la base de données.
Utilisez d'abord like pour connaître une partie des données, puis bouclez in_array() pour filtrer ou modifier la structure de la table
Il s’agit évidemment d’une relation plusieurs-à-plusieurs.
Je pense donc qu'il vaut mieux que vous gardiez trois tables.
Cela correspond davantage au paradigme.
Il devrait être plus raisonnable de se conformer au paradigme. Si vous insistez sur l'idée originale, ajoutez des séparateurs avant et après chaque identifiant de catégorie, et ajoutez des séparateurs lors de la correspondance avec des likes
Lorsque vous utilisez like, par exemple, si vous avez une valeur comme 1,2,11, like 1 aimera 1 et 11
Dans ce cas, veuillez utiliser find_in_set
Si vous insistez pour utiliser like, la valeur du champ peut être comme ceci, 1,2,11. Lorsque vous aimez, like,1, peut également atteindre l'objectif
.