Ir para conteúdo

POWERED BY:

Arquivado

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

marvi

como fazer busca para duas tabelas?

Recommended Posts

Pessoal, não sei como fazer a seguinte:

 

Tenho duas tabelas distintas:

 

tabela Noticias com campos: titulo, conteudo e a tabela Cds com campos: titulo, conteudo e etc.

 

Vamos dizer que na tabela noticias tem:

 

titulo: João e Maria

conteudo: se casaram hoje joão e maria.

 

Na tabela Cds tem:

 

Titulo: João e seus sucessos

Conteudo: As melhores músicas de joão.

 

Terei o campo que ao pesquisar o nome João deverá ter uma query que pesquise pelo campo titulo o nome joão, mas deve pesquisar tanto da tabela noticias e da tabela cds, já que há o nome joão nas duas e exbibir na busca, tipo:

 

Resultado da busca:

 

João e seus sucessos

--------------------

João e Maria

-------------------

 

 

Se caso só tenha o nome pesquisado, joão, na tabela Cds, ficaria:

--------------

João e seus sucessos

--------------

 

Como fazer uma query assim? seria uma subquery com Where? Qual a melhor solução? Pode ser pelo ASP mesmo ou SQL?

 

Uso o SQL server 2000

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se as tabelas possuirem a mesma estrutura use o UNION - pesquise no books online ou no google as particularidades para adaptar ao seu caso.

 

Um exemplo:

 declare @Noticias table (titulo char(30), conteudo char(30))
 declare @Cds table (titulo char(30), conteudo char(30))

insert into @Noticias (titulo, conteudo) values ('João e Maria','se casaram hoje joão e maria')
insert into @Noticias (titulo, conteudo) values ('Andrea','ioioioioio')


insert into @cds (titulo, conteudo) values ('João e seus sucessos','As melhores músicas de joão.')
insert into @cds (titulo, conteudo) values ('Maria','teste teste')

select * from @noticias where titulo like '%joão%'
union 
select * from @cds where titulo like '%joão%'

Caso a estrutura seja diferente você pode criar um tabela temporário e fazer o insert de cada tabela (noticias e cds) nesta temporária e depois retornar o select da mesma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou tambem pode usar um INNER JOIN

SELECT * FROM NOTICIAS AS NT INNER JOIN CDS AS CD ON NT.TIUTLO=CD.TITULO WHERE NT.TITULO LIKE '%varialvel%' AND CD.TITULO LIKE '%variavel%'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gilberto Jr,

 

Na minha humilde opinião neste caso o INNER JOIN pois o contéudo dos campos TITULO da duas tabela são diferentes.

 

Em noticias esta "João e Maria" e em CDS esta "João e seus sucessos" .

 

Pelo que sei de SQL, e sei bem pouco, para se usar INNER JOIN o conteúdo dos campos precisam ser idênticos.

 

Fiz este teste e não rodou:

 declare @Noticias table (titulo char(30), conteudo char(30))
 declare @Cds table (titulo char(30), conteudo char(30))

insert into @Noticias (titulo, conteudo) values ('João e Maria','se casaram hoje joão e maria')
insert into @Noticias (titulo, conteudo) values ('Andrea','ioioioioio')


insert into @cds (titulo, conteudo) values ('João e seus sucessos','As melhores músicas de joão.')
insert into @cds (titulo, conteudo) values ('Maria','teste teste')


SELECT * FROM @Noticias AS NT 
INNER JOIN @CDS AS CD 
ON NT.titulo=CD.titulo 
WHERE NT.TITULO LIKE '%joão%' o CD.TITULO LIKE '%joão%'

Agora se têm como fazer INNER JOIN com contéudos diferentes realmente gostaria de saber como?

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa um INNER JOIN a impôrtancia de uma modelagem de dados bem definida até os mínimos detalhes, como os campos de relacionamentos, um velho ditado diz, que um relacionamento bem definido é a alma do aplicativo, pois daí saem todas as consultas e operações com o banco, influenciando diretamente na otimização e performance do aplicativo , um projeto bem estruturado,

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.