Ir para conteúdo

POWERED BY:

Arquivado

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

onedev

Problemas do SELECT IN em busca asp com mysql

Recommended Posts

Olá,

 

preciso fazer um sistema que exiba o cadastro de clientes com autorizações. Cada autorização possui um número entao na tabela de clientes adicionei um campo chamado AUTORIZACOES aonde gravo as autorizacoes da seguinte forma: 10,45,35,20,1

 

Bom agora que tenho gravado os numeros de autorizacoes preciso exibir uma lista de clientes que possuem uma determinada autorizacao, entao usei o seguinte codigo:

 

Sql = "SELECT * FROM contatos WHERE autorizacoes IN (10)"

O grande problema é que dessa forma o sistema entra em conflito quando tempos gravado as autorizacoes 1 e 10. Ele se confunde e não exibe o resultaco corretamente. Para resolver isso tive a ideia de gravar o numero das autorizacoes seguinte de uma letra, ficando assim = 10C,45C,35C,20C,1C

 

O problema é que agora acontece um erro no select in.

 

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[MySQL][ODBC 5.1 Driver][mysqld-4.1.18-nt-log]Unknown column '10C' in 'where clause'

Alguem sabe me explicar se o select in só pode procurar numéros? porque ocorreu esse eroo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

autorizacoes é Texto ou Numérico?

 

Para utilizar IN 10C, tem que ser dentro de aspas simples IN('10C')

Compartilhar este post


Link para o post
Compartilhar em outros sites

o IN nao é para este tipo de uso

 

para usar pegando apenas parte de um registro use LIKE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pd ser q ele não reconheça o campo como tipo inteiro entam coloca entre aspas assim:

 

Sql = "SELECT * FROM contatos WHERE autorizacoes = '10'"

 

Ou assim:

 

Sql = "SELECT * FROM contatos WHERE autorizacoes IN ('10')"

Compartilhar este post


Link para o post
Compartilhar em outros sites

O operador IN permite a você especificar valores múltiplos em uma cláusula WHERE.

 

SELECT column_name(s)
FROM table_name WHERE column_name IN (value1,value2,...)

 

Campos inteiros suportam o operador IN. O problema é que você usando essa aspa simples, está dizendo que o valor a ser comparado é do tipo varchar. Isso não pode. O ideal seria algo como:

 

SELECT * FROM Tabela WHERE Campo IN (1, 2, 3, 4)

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema é que ele armazena os dados assim

 

10,45,35,20,1

 

então o IN não o encontrará

 

se fosse o contrario acharia

 

por isso sugeri o LIKE que pode pegar parte da string

Compartilhar este post


Link para o post
Compartilhar em outros sites

O IN funciona da forma que citei. Mas você precisa fazer uma adaptação para o que quer.

 

De onde vem os dados a serem comparados com autorizacoes ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o certo mesmo era voce normalizar seu db mas ja que está assim adapte

 

grave assim ,10,110,210,

 

e quando usar o LIKE use assim ,10,

 

desta forma funcionará

Compartilhar este post


Link para o post
Compartilhar em outros sites

hahaha...

 

Boa Mario!

 

me surpreendeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode colocar "SELECT * FROM tabela WHERE campo LIKE '%"&VARPESQUISA&"%' ORDER BY campo"

onde você atribui o 10 para VARPESQUISA

Compartilhar este post


Link para o post
Compartilhar em outros sites

hahaha...

 

Boa Mario!

 

me surpreendeu.

não entendi :blink:

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.