Ir para conteúdo

POWERED BY:

Arquivado

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

PotHix

Query campo varchar no IN()

Recommended Posts

Æ!!

 

PessoALL,

 

Estou com o seguinte problema:

 

Tenho 2 tabelas, sendo que uma tem um campo varchar com os numeros dos ids da outra tabela, e a outra um campo int com os ids...O que preciso fazer é o seguinte:

 

tabelapai:

 

id-------itens_relacionados

1--------'12, 13, 14'

2--------'20, 25, 30'

 

 

tabelafilho:

id--------valor

12-------100

13-------250

20-------300

25-------800

 

 

Esse select:

SELECT SUM(valor) FROM tabelafilho WHERE id IN (SELECT itens_relacionados FROM tabelapai WHERE id = 1)

 

Deveria trazer o valor de: 350....Mas como o campo é varchar, ele me retorna um erro de conversão de campo:

 

Syntax error converting the nvarchar value '12, 13, 14' to a column of data type int.

Alguem tem alguma outra solução?

 

Agradeço desde já a atenção de todos e aguardo resposta.

 

Grato,

 

PotHix

Compartilhar este post


Link para o post
Compartilhar em outros sites

PotHix,

 

cara que estrutra maldita te passaram hein.... mas faz parte

 

creio que dessa forma não vai ter jeito mesmo, pois o campo esta como string e a tabela itens tem a chave como int, acho que o esquema é tu quebrar essa string pela virgula "," gerando numa tabela virtual com o campo gravado corretamente em int, pra fazer isso é só fazer um while, usando as funções charindex para encontrar a "," e substring para os posicionamentos e tb. as funções ltrim/rtrim para os espaços em branco, tenta fazer ai, se tiver muita dificuldade, qq. coisa retorna

neste tópico tem exemplo de tabela virtual/temporária: http://forum.imasters.com.br/index.php?showtopic=224865

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Æ!!

 

Obrigado Eriva!

Vou ver o que eu posso fazer...

 

E parabens pelo tutorial! Muito bom!

 

Há braços

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.