Marciu 0 Denunciar post Postado Fevereiro 12, 2011 Bom dia, amigos! Pesquisei nos fóruns e, aparentemente, não encontrei algo parecido. Estou desenvolvendo um site de buscas, em que o usuário digita parte de uma atividade (exemplo: 'mercado') e preciso procurar em uma grande lista de Categorias definidas, contudo preciso procurar em partes do campos. Exemplo de categorias: 'Supermercados - Varejista', 'Mini-mercado', 'enHyper-mercado'. To tentando algo do tipo, mas confesso que estou completamente perdido: SELECT m.name as comerciante, m.activity, c.name FROM merchant as m INNER JOIN category as c ON m.activity RLIKE c.name WHERE m.activity = 'mercado' Agradeço desde já. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Fevereiro 12, 2011 LIKE ... WHERE m.activity LIKE '%mercado%' ... Atenção também para caixa alta e baixa. Compartilhar este post Link para o post Compartilhar em outros sites
Marciu 0 Denunciar post Postado Fevereiro 12, 2011 LIKE ... WHERE m.activity LIKE '%mercado%' ... Atenção também para caixa alta e baixa. Obrigado, Motta. Mas não consegui explicar. Tenho uma tabela de Atividades (é como uma tabela de categoria) e outra tabela de comerciantes com um campo na tabela comerciantes que se chama 'activity'. No caso quero entrar com um fragmento ou mais de atividades, procurar todas as categorias que se encaixam, para depois, com as categorias na mão procurar os comerciantes que tenha alguma atividade que se encaixa no nome das categorias. Exemplo de tuplas na tabela Atividades id, name 1, 'Supermercados - Varejista' 2, 'Hypermercados - Atacado - Varejista' 3, 'Mercadorias - Equipamentos' Exemplos de tuplas na tabela Comerciantes id, name, activity 1, 'Casas B', 'Varejista' 2, 'Pao de Acucar', 'Supermercado' 3, 'Empório do Zé', 'Bebidas e Equipamento 4, 'Bazar do Foo', 'Equipamentos, Atacado' Desculpa pela complicação e obrigado pela ajuda :joia: Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Fevereiro 12, 2011 Como merchant se liga a category ? Faça o JOIN entre as tabelas e teste a substring em questão. SELECT m.name as comerciante, m.activity, c.name FROM merchant as m INNER JOIN category as c ON AQUI ENTRA O JOIN WHERE m.activity = 'mercado' Compartilhar este post Link para o post Compartilhar em outros sites
Marciu 0 Denunciar post Postado Fevereiro 13, 2011 Boa tarde, Motta! Agradeço muito a sua ajuda. Como merchant se liga a category ? Nesta caso não quero utilizar, chave estrangeira. Na realidade o que, eventualmente, relaciona as tabelas são palavras inteiras (nem sempre o campo inteiro) que estão dentro do campo 'activity' da tabela 'merchant', com o campo 'name' da tabela 'categoria'. Por isso no momento do ON do JOIN, eu não poderia, por exemplo usar ON c.id = m.id. Pensei em usar ER, mas estou com dificuldades. Talvez eu deveria partir outra linha de raciocínio e não com JOIN. O que você acha? Grato mais uma vez! :joia: Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Fevereiro 13, 2011 ... o que, eventualmente, relaciona as tabelas são palavras inteiras (nem sempre o campo inteiro) que estão dentro do campo 'activity' da tabela 'merchant', com o campo 'name' da tabela 'categoria'. ... Talvez : SELECT * FROM CATEGORIA WHERE EXISTS (SELECT NULL FROM MERCHANT WHERE CATEGIRIA.ACTIVITY LIKE '%'+MERCHANT.CATEGORY+'%' Nota : Só não sei se a concatenação se faz com o +. Compartilhar este post Link para o post Compartilhar em outros sites
Marciu 0 Denunciar post Postado Fevereiro 14, 2011 Vou fazer uns testes. Mas não entendi isso. Talvez: SELECT NULL Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Fevereiro 14, 2011 Quando eu uso EXISTS uso NULL pois a ideia é apenas testar se o SUB-SELECT retorna algo , não precisa usar uma coluna ou * pois basta saber se haverá retorno. O talvez é porque não tenho certeza se eu entendi corretamente o seu problema aqui. Compartilhar este post Link para o post Compartilhar em outros sites