Guariento 1 Denunciar post Postado Setembro 23, 2012 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? Compartilhar este post Link para o post Compartilhar em outros sites
DiegoAngra07 21 Denunciar post Postado Setembro 23, 2012 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. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 23, 2012 Concordo com o DiegoAngra07. Compartilhar este post Link para o post Compartilhar em outros sites
Guariento 1 Denunciar post Postado Setembro 24, 2012 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. Compartilhar este post Link para o post Compartilhar em outros sites
DiegoAngra07 21 Denunciar post Postado Setembro 24, 2012 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. Compartilhar este post Link para o post Compartilhar em outros sites