Hey gars, j'essaie de comprendre comment puis-je correspondre à certains produits similaires, mais pas tous les mêmes noms ou différences de clés de noms. P>
Voici la chose. P>
J'ai choisi une catégorie de produits particulière, certaines pièces de la voiture permettent de ne pas entrer dans ce :). P>
Les gars à l'achat ajouteront parfois une description 'ceci et que l' ou 'ceci et que r' Ce qui signifie que la partie est laissée ou à droite, elles vendent séparément ou vous pouvez les acheter en paire mais pour le faire, je devrais donc faire correspondre à tous les lieux exacts avec les droits. Pour la rendre plus compliquée, chaque personne qui travaille à l'achat a son propre style d'écriture unique, parfois, le L sera parfois au milieu, parfois à la fin, parfois avec une slash / l beaucoup en cours, aussi le produit_id devrait dans la plupart les cas une après l'autre permettent de dire 10001 l et 10002, r mais non en général, mon sintax final devrait également être avec une condition que je souhaite voir si mon stock de correspondant à L est différent du stock de RC, de cette façon une option pour Acheter en paire serait toujours disponible. P>
Voici un exemple de la table p>
Je pense que je pense que le groupe de marque, correspond à la description d'une manière ou d'une description des résultats à condition où le stock de correspondant L <> stock à partir de r. p>
Des idées Comment attaquer la chaîne de description sont les bienvenues. Je devrais souligner que l'isolation de la chaîne ne serait pas sage que une marque peut avoir de nombreuses paires correspondantes. De plus, je devrais affecter comme L ou R pour tous les éléments de tous les groupes correspondants afin que je puisse calculer leur différence, je suppose p>
3 Réponses :
Hourra pour les données sales. Votre meilleur plan d'action à long terme consiste à ajouter une colonne à votre table appelée, par exemple, "la main", et obtenez vos agents d'achat pour le peupler correctement. Mais vous savez que.
En attendant, je vous suggère d'ajouter une vue à votre base de données afin que vous puissiez afficher ce tableau comme s'il avait la colonne "Main". À votre avis, la définition de votre colonne supplémentaire comprendra une grosse affaire laide de la graisse WHeh puis une déclaration pour calculer la valeur de "main". P>
Pourquoi cela est-ce de cette façon? Vos règles d'entreprise pour extraire la garantie de la description du produit ne sont pas bien définies et vous devrez vous déconner avec ce point de vue pour l'obtenir pour faire la bonne chose pour tous vos deux cas. Si vous le définissez comme une vue, vous pourrez facilement inspecter les résultats pour vous assurer qu'ils sont corrects. P>
Vous voudrez faire quelque chose comme ceci: P>
SELECT l.description, LEAST(r.stock, l.stock) pairstock, l.stock lstock, r.stock rstock FROM inventory_with_hand l JOIN inventory_with_hand r ON l.id <> r.id /* L and R must have different ids */ AND l.hand = 'L' /* left */ AND r.hand = 'R' /* right */ AND ABS (l.id - r.id) < 10 /* id values close enough */ AND l.brand = r.brand /* same brand */ AND LEVENSHTEIN(l.description, r.description) <= 5
S'il vous plaît voir mon édition pour quelques idées supplémentaires. Je suis à mes suggestions pour que les utilisateurs de votre entreprise nettoient vos données.
À la fin, j'ai utilisé une combinaison, la main pour extraire tous les atributes de L et R des descriptions folles imgur.com/a/5x5vxdx Aussi j'ai découvert que si le regroupement de la marque deux paires a été pleinement rempli toutes les conditions de même que 4 articles ont été jumelés par une marque, je viens d'ajouter une autre condition pour vérifier les 3 derniers charctes de la chaîne, un cas étant identique et L'autre unique, suffisamment pour séparer les 4 articles et les associer correctement imgur.com/a/vsjrt86
J'ai testé la méthode Levenshtein, semble assez soignée également, mais le jeu de résultats diffère de deux paires, je double vérifier mes conditions, vraiment informatif et cool ...
Encore une fois merci pour l'entrée Jones, pendant que vous étiez occupé à m'aider à sortir J'essayais des options avec une longueur de string_length avec condition que l'identifiant ne soit que deux chiffres plus haut ou plus bas et différence entre L.Stock et R.Stock pour la paire de correspondance différente de zéro et que le stock doit être supérieur à zéro
je dois dire Vous avez des assez bons résultats p> ordre par longueur (description) Desc p>
La fonction LevenSthein semble vraiment intéressante, j'essaie de comprendre toutes les variables pour créer la fonction afin que je puisse l'optimiser plutôt que de copier la pâte ... P>
Au premier abord, tout ce que je peux voir, c'est que la partie maximale de la chaîne est définie sur 255 et que ce serait le nombre le plus élevé à choisir lorsqu'il y a appliqué, puis il déclare des cordes ou des soustractions et leur longueur, puis Bouquet de JS, est, CS, quel que soit l'enfer taht, c'est ... semble important :) Toute façon ... P>
I Définissez la cause inférieure des ABS à quinze d'entre eux ne sont que + -1, quelque chose de quelque chose, mais même difficile, il semble logique de définir la distance sur 1 ou 5 par exemple. R ou droite il ne le fera pas. Je dois la définir à au moins 20 pour obtenir une liste complète des paires qui satisfontent les conditions nécessaires. P>
J'ai utilisé cela pour essayer des capacités de production et sa grande 20 secondes pour exporter une CSV avec une liste complète des articles et une importation vers ERP qui sont candidats à la réapprovisionnement. P>
Plus tard, j'ai commencé à préformuler des chèques, même avec ces éléments ne correspondant pas à toutes les conditions et obtenu à nouveau des valeurs aberrantes. P>
Ici, nous avons 4ID; 2LS & 2RS mais 3 paires de conditions de cause ont été remplies: L.id <> r.id, ils sont dans la plage, même marque ... p>
Ce que j'ai des avis, c'est que la chaîne de décrutions contient une sous-chaîne numérique qui est essentiellement du code du fabricant ou quelque chose du genre à celui que NAD, j'ai créé une fonction de chiffres qui renvoie tous les numéros de la chaîne. P>
code pour L est toujours inférieur, puis code pour r p>
Dans ce cas, nous avons (Les identifiants plus faibles ont un code plus élevé, généralement son proprotional) p>
Ma fonction de chiffre retournera tous les numéros de la chaîne p>
Donc de partir de ce 'KRAJNIK VW VO-ES-8215 L T-4 90 ->' P>
Je vais obtenir 8215490 sa paire correspondante doit être 8217490 P>
Je pensais comme isoler le seul caractère par des positions dans ces sous-chaînes qui sont des numéros 5 pour L et 7 pour R et nommer que la relation que le caractère de condition unique qui est différent et sa même position doit être plus petit pour L que r, mais c'est aussi le cas dans l'exemple erroné. P>
Peut-être que je devrais juste juste hé si un identifiant L est assorti à R.IDS, allez pour le plus proche Mais 33214 est assorti à 33213 et 33215, les deux ont la même distance, et la règle opère pour le niveau inférieur ou supérieur ne s'applique pas à l'ensemble de l'ensemble, parfois L.Id> R.Id ... P>
Une chose est pour certains personnes toujours, l.code C'est une affaire délicate c'est, c'est-à-dire
Il n'y a que 8 articles allommables comme des valeurs aberrantes, et même pas intéressantes à ce stade de la compagnie de Belièe sage, mais quand vous voulez le faire correctement, heh ... p>
Avez-vous enquêté sur l'indexation complète du texte?
Quelle version de MySQL ou MARIADB utilisez-vous? Je vous demande parce que les opérations de substitution de chaînes de régex peuvent aider et elles ne sont disponibles que dans les versions ultérieures. S'il vous plaît Modifier Votre question.
C'est le dernier, je pensais à cette solution aussi, j'ai réussi à obtenir une liste de résultats propres, en nommant de plus en plus de conditions que vous pouvez voir que vous pouvez le voir répertorié dans l'article suivant, mais éventuellement dans cette solution particulière, je pourrais obtenir un article Correspondance avec une autre longueur de chaîne et est en + -2 ID_Number, je dois vérifier si les éléments qui marquent dans la plage de + -1 sont en réalité une sorte de validité des valeurs aberrantes ou non acvtive, puis je peux utiliser la plage + -1 Cause il semble certain que 99,9% des paires correspondantes sont créées logiquement et répertoriées l'une après l'autre.