Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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%'
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?
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,
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))
uniondeclare @Cds table (titulo char(30), conteudo char(30))