Ir para conteúdo
Fórum Script Brasil
  • 0

como fazer busca para duas tabelas?


marvi

Pergunta

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

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde Marvi,

Fiz duas tabelas temporárias para exemplificar. Cria as tabelas, insere os dados e depois roda o select.

create table #Noticias (titulo varchar(100), conteudo varchar(100))
create table #Cds  (titulo varchar(100), conteudo varchar(100))

insert into #Noticias values ('João e Maria', 'se casaram hoje joão e maria.')
insert into #Cds values ('João e seus sucessos', 'As melhores músicas de joão')

select * from #Noticias

select * from #Cds

select titulo from #Noticias where titulo like 'João%' 
UNION
select titulo from #Cds where titulo like 'João%'

Link para o comentário
Compartilhar em outros sites

  • 0

Mas dar um problema, tem uma tabela que precisa da data e outra não tem esse campo data e fica assim:

SELECT titulo, data

FROM Noticias

WHERE titulo LIKE '%taurus%'

UNION

SELECT titulo

FROM Cds

WHERE titulo LIKE '%taurus%'

mas dar um erro: All queries in an SQL statement containing a UNION operator must have an equal number of expressions in their target lists.

E no loop terá <%=rsbusca("titulo")%> e <%=rsbusca("data")%>, acredito que data para Cds vai dar problemas.

Editado por marvi
Link para o comentário
Compartilhar em outros sites

  • 0

Quando se utiliza o UNION, as colunas de retorno devem ser do mesmo tipo. A ordem também deve ser lavada em consideração. Se o 1º select possui as colunas titulo, data, o 2º também tem q conter uma coluna do tipo caracter e data. No seu caso, titulo e alguma data. Tente pegar a data da tabela Cds.

Ex.:

SELECT titulo, data

FROM Noticias

WHERE titulo LIKE '%taurus%'

UNION

SELECT titulo, DataTabelaCds

FROM Cds

WHERE titulo LIKE '%taurus%'

Se não tiver, pode-se colocar NULL:

SELECT titulo, data

FROM Noticias

WHERE titulo LIKE '%taurus%'

UNION

SELECT titulo, NULL

FROM Cds

WHERE titulo LIKE '%taurus%'

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...