Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Linhas de atualização do MySQL com junção esquerda dupla, limitando a primeira correspondência


Você facilitou bastante a tarefa com seu sqlfiddle, bem como sua tentativa de resolver o problema com a consulta Select.

Ele funciona do jeito que você quer, eu acho, e tudo o que preciso fazer é adicionar mais uma junção à esquerda com a tabela de categorias (IDK por que você não conseguiu ingressar na categoria, pois está funcionando corretamente).

Então. Editei sua consulta de seleção da seguinte maneira:
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;

Você obterá os resultados desejados com esta consulta.

Agora, para atualizar Products tabela com o resultado desta consulta, você pode fazer o seguinte:
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;

Clique aqui para demonstração de trabalho

Espero que ajude!