Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Prezados, em uma tabela chamada CONTATOS eu criei um campo chamado TIPO_DE_CONTATO (varchar). Neste campo eu armazeno a informação de ID de uma terceira tabela chamada de TIPOS_CONTATOS, exemplo:
Tabela: TIPOS_CONTATOS
id 1 = Fornecedor
id 2 = Cliente
id 10 = Transportadora
id 11 = Vendedor
id 12 = Funcionario terceirizado
Então, ao criar um registro na minha tabela de CONTATOS, eu armazeno no campo CONTATOS.TIPO_DE_CONTATO algo como: "1; 2; 10; 11; 12;".
Enfim, até aqui tudo tranquilo. Agora minha dúvida é como pesquisar dentro deste campo, exemplo: se eu quiser saber quais são os registros da tabela de CONTATOS que contém em CONTATOS.TIPO_DE_CONTATO a informação referente ao "Fornecedor" (ou seja, id 2), como eu faço?
Basta eu usar INSTR no WHERE?
Minha dúvida: usei INSTR, mas já que CONTATOS.TIPO_DE_CONTATO é VARCHAR, ele identifica os seguintes registros: "2; 12" pois todos estes contém número "2".
Sugestões de como localizar esta informação da forma correta?
Concordo com o DiegoAngra07.
Motta e Diego, agradeço. Sei que é a melhor forma fazer uma tabela extra, entretanto, estou tentando corrigir o problema de um sistema já pronto. Sei que posso fazer esta análise via código fonte da aplicação dando um split no conteúdo e analisando o array gerado, item a item.
Mas considerando que eu não posso alterar a estrutura do sistema acrescentando esta tabela extra e nem adicionar essa análise via um "split", ou seja, sendo eu forçado a trabalhar da forma como eu citei no exemplo, qual melhor maneira de se fazer esta análise sem que os erros que citei aconteçam?
Até pensei em colocar no INSTR a informação seguinte, exemplo: "2;" , número dois seguido do ponto e vírgula, MAS tem um porém, se o número 2 for o último da lista, ele não é seguido do ponto e vírgula (ex: "2; 12"), então um erro pode acontecer.
Bom amigo, a última vez que lembro de ter visto algo assim foi nesse tópico aqui.
Não sei se pode ser a maneira mais simples de se fazer, e não obtive resposta do autor do tópico, mas nas minhas simulações essa Procedure funcionou. Espelhe-se nela, nas rotinas que separam os valores do campo VARCHAR, e tente desenvolver uma pro seu caso.
Como disse, não sei se é a forma mais simples, mas se precisar de ajuda estamos aí. Quem sabe alguém tenha uma solução melhor.
Abraço.
Boa tarde amigo,
Bad bad, eu faria uma tabela para relacionar essas duas. Por exemplo, se o contato de ID 1 tem 3 tipos de contatos (5, 7 e 9), nessa tabela haveriam 3 linhas relacionando o ID 1 do contato com cada tipo de contato.
Se precisar de exemplos melhores é só pedir, abraço.