Mysql
 sql >> Base de données >  >> RDS >> Mysql

Lignes de mise à jour MySQL avec double jointure gauche, limitant la première correspondance

Vous avez rendu la tâche assez facile avec votre sqlfiddle ainsi que votre tentative de résoudre le problème avec la requête Select.

Cela fonctionne comme vous le souhaitez, je suppose, et tout ce que j'ai à faire est d'ajouter une autre jointure gauche avec la table des catégories (IDK pourquoi vous n'avez pas pu rejoindre la catégorie car cela fonctionne correctement).

Alors. J'ai modifié votre requête de sélection comme suit :

select Products.name, Filters.*,Categories.id from Products
left join Filters
on Products.name LIKE CONCAT('%',Filters.filter,'%')
left join Categories
on Categories.name = Filters.category_name
GROUP BY Products.name;

Vous obtiendrez les résultats souhaités avec cette requête.

Maintenant, afin de mettre à jour Products table avec le résultat de cette requête, vous pouvez faire ce qui suit :

update Products
left join Filters
on Products.name LIKE CONCAT('%',Filters.filter,'%')
left join Categories
on Categories.name = Filters.category_name
set Products.category_name = Filters.category_name, 
    Products.category_id = Categories.id;

Cliquez ici pour une démonstration de travail

J'espère que cela vous aidera !