Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marciu

INNER JOIN com ON campo RLIKE campo

Recommended Posts

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

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

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

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
... 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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.