Ir para conteúdo

POWERED BY:

Arquivado

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

fmortari

SELECT %campo% ???

Recommended Posts

Fala galera!

 

Estou abrindo esse tópico porque pesquisei bastante e não consegui sanar minha dúvida.

É o seguinte, no banco de dados SQL tenho, além de outras, duas tabelas: Livros e Autores. Na tabela Livros tem um campo "autor" e na tablela autores tem um campo "autor_nome".

Estou utilizando o SELECT para encontrar na tabela Autores registros que o valor do campo "autor_nome" esteja presente no campo "autor" da Tabela livros. Até aí tudo bem, o código é o seguinte:

 

ASP

[*]Set Livro Server.CreateObject("ADODB.Recordset")

 

[*]Livro.Open "SELECT * FROM Livros WHERE livro_cod = '" & livro_cod & "'", Conexao

 

[*]

 

[*]Set Autor Server.CreateObject("ADODB.Recordset")

 

[*]Autor.Open "SELECT * FROM Autores WHERE autor_nome LIKE '" & Livro("autor") & "'", Conexao

 

O problema é que existem livros que possuem mais de um autor.

Por exemplo no campo "autor" da tabela Livros terá "Fulano da Silva e Ciclano Pinto" e na tabela Autores, no campo "autor_nome" haverá um registro com o valor "Fulando da Silva" e outro com o valor "Ciclano Pinto".

 

Nesse caso, eu não estou conseguindo localizar c/ SELECT na tabela Autores os registros que o campo "autor_nome" seja igual a parte do campo "autor" da tabela Livros.

 

Se fosse o inverso utilizaria:

 

ASP

[*]Set Livro Server.CreateObject("ADODB.Recordset")

 

[*]Livro.Open "SELECT * FROM Livros WHERE livro_cod = '" & livro_cod & "'", Conexao

 

[*]

 

[*]Set Autor Server.CreateObject("ADODB.Recordset")

 

[*]Autor.Open "SELECT * FROM Autores WHERE autor_nome LIKE '%" & Livro("autor") & "%'", Conexao

 

Mas é o contrário disso, tentei várias coisas do tipo:

 

ASP

[*]Set Livro Server.CreateObject("ADODB.Recordset")

 

[*]Livro.Open "SELECT * FROM Livros WHERE livro_cod = '" & livro_cod & "'", Conexao

 

[*]

 

[*]Set Autor Server.CreateObject("ADODB.Recordset")

 

[*]Autor.Open "SELECT * FROM Autores WHERE %autor_nome% LIKE '" & Livro("autor") & "'", Conexao

 

Mas não rolou...

 

Alguém pode me dar uma luz?

Valew desde já!!!

 

Fabio

PS. desculpe a bíblia hehehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

ASP

[*]Set Autor Server.CreateObject("ADODB.Recordset")

 

[*]

 

[*]Autor.Open "SELECT * FROM Autores WHERE autor_nome LIKE '%" & Livro("autor") & "%'", Conexao

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, tente fazer algo assim, chamando as duas tabelas em uma única query..."SELECT * FROM autores,livros WHERE autores.autor_nome like '%livros.autor %'"bs,Twunay

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Twunay,Boa idéia a sua de chamar as duas tabelas na mesma Query, mas nesse caso específico não seria viável pois mais adiante darei tratamento diferente para cada RS.De qq forma, não deu certo. Assim eu estaria buscando registros onde o campo Livros.autor é igual a pelo menos parte do campo Autores.autor_nome certo? É exatamente o contrário disso que preciso, tentei utilizar as '% %' no campo Autores.autor_nome mas não deu certo.DackAle, não sei se notou, mas já utilizei isso e não rolou exatamente pelo q expliquei acima.Valeu pela ajuda os dois.Alguém tem outra idéia?ValewFabio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, vamos la.... você ta pegando a ID do livro e fazendo um SELECT pegando os dados dele certo ? Dai você pega o nome do autor, que as vezes podem ser dois autores ou mais, e faz um select pra pegar os dados dos autores, seu problremas esta basicamente em pegar dados de mais de um autor, quando vier dois por exemplo certo ?

 

Bom pela logica, no banco de dados os nomes estão sendo salvos como

"alexandre carlos,ruy barbosa" ou como você citou "alexandre carlos e ruy barbosa", bom se a regra de separação for SEMPRE o E, basicamente de um split, faça um FOR e faça quantos selects for necessario, vamos la

 

ASP

[*]Set Livro Server.CreateObject("ADODB.Recordset")

 

[*]

 

[*]Livro.Open "SELECT * FROM Livros WHERE livro_cod = '" & livro_cod & "'", Conexao

 

[*]

 

[*]quebra split(Livro("autor")," e ")

 

[*]

 

[*]if isarray(quebra) and quebra > 0 then

 

[*]FOR I = 0 TO UBOUND(quebra)

 

[*]

 

[*]Set Autor Server.CreateObject("ADODB.Recordset")

 

[*]

 

[*]Autor.Open "SELECT * FROM Autores WHERE autor_nome LIKE '" & quebra(I) & "'", Conexao

 

[*]

 

[*]

 

[*]NEXT

 

[*]

 

Só um exemplinho de cabeça, mas é uma forma de se fazer o que você quer, basicamente se quebra o valor em dois ou mais e faz um looping pra pegar todos os autores...

 

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