Ir para conteúdo

POWERED BY:

Arquivado

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

ZioNN

UNION sabendo de que tabela é cada registro retornado. Tem como?

Recommended Posts

Pessoal,

 

Estou precisando fazer um sistema de busca em várias tabelas ao mesmo tempo. Estas tabelas possuem campos principais de formato semelhante e portanto eu conseguiria utilizar o UNION tranquilamente, creio eu (apesar de nunca tê-lo usado). O problema é que NOS DETALHES de cada tabela, há campos diferentes, então para cada registro retornado pela busca, eu tenho que redirecionar o usuário para a tela de detalhes correspondente ao tipo de dados que ele está acessando. Então eu precisaria saber de qual tabela cada informação está sendo retornada para poder linkar com a página de detalhes correta.

 

Não sei se fui claro.

 

Por exemplo:

 

Eu tenho os campos titulo, data, descricao como campos iguais a todas as tabelas, porém em algumas tabelas há outros campos diferenciados como: foto, arquivo, autor, etc

 

Antes que me sugiram fazer ifs para cada campo na página de detalhe, quero dizer que o layout do detalhe de cada tipo de notícia é completamente diferente. Aqui estou dando um exemplo bem simples, mas a coisa vai longe.

 

Então quero saber se no retorno da consulta SQL ao banco de dados, utilizando UNION (ou equivalente), há algum parâmetro que me retorne de que tabela estou lendo cada registro.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma idéia é adicionar um campo com o nome da tabela para cada select e adicionar um apelido pro campo, exemplo:

select 'tabela1' AS nometabela, campo1, campo2 from tabela1
union
select 'tabela2' AS nometabela, campo1, campo2 from tabela2

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma idéia é adicionar um campo com o nome da tabela para cada select e adicionar um apelido pro campo, exemplo:

select 'tabela1' AS nometabela, campo1, campo2 from tabela1
union
select 'tabela2' AS nometabela, campo1, campo2 from tabela2

 

interessante essa opção. Vou tentar. Muito obrigado pela dica!

 

Aproveitando: Em Portais, onde há muito conteúdo em diversas tabelas, qual é a melhor forma de efetuar uma busca eficiente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Aproveitando: Em Portais, onde há muito conteúdo em diversas tabelas, qual é a melhor forma de efetuar uma busca eficiente?

 

o mais importante de uma busca é a indexação, faça uma analise em suas consultas para verificar se os indices estão okay, se suas buscas são baseados em campos do tipo text, xml ou em grandes texto em char, varchar, verifique se é necessário implementar consultar do tipo FULL TEXT, alguns links para estudo:

http://blogs.msdn.com/procha/archive/2008/05/15/consultas-full-text-em-portugu-s-no-sql-server-2005.aspx

http://www.mcdbabrasil.com.br/modules.php?name=News&file=article&sid=228

 

sobre union, veja a diferença de union e union all: http://forum.imasters.com.br/index.php?/topic/224851-operador-union-e-union-all/

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

Aproveitando: Em Portais, onde há muito conteúdo em diversas tabelas, qual é a melhor forma de efetuar uma busca eficiente?

 

o mais importante de uma busca é a indexação, faça uma analise em suas consultas para verificar se os indices estão okay, se suas buscas são baseados em campos do tipo text, xml ou em grandes texto em char, varchar, verifique se é necessário implementar consultar do tipo FULL TEXT, alguns links para estudo:

http://blogs.msdn.com/procha/archive/2008/05/15/consultas-full-text-em-portugu-s-no-sql-server-2005.aspx

http://www.mcdbabrasil.com.br/modules.php?name=News&file=article&sid=228

 

sobre union, veja a diferença de union e union all: http://forum.imasters.com.br/index.php?/topic/224851-operador-union-e-union-all/

 

Eriva, obrigado pelas dicas. Dei uma olhada nos links e vi que são para SQL versões 2000 e 2005. Estou usando a versão 2008. Procurarei conteúdo semelhante relativo a esta versão, já que pode haver mudanças que desconheço.

 

Uma outra dúvida que tenho que talvez você possa me ajudar é como realizar buscas em páginas estáticas, ou seja, que não tem seu conteúdo em banco de dados, ao mesmo tempo em que busco por conteúdo em BD. Sei que a pergunta parece não ter relação com o escopo desta seção, mas talvez a resposta possa ter. Eu estou desenvolvendo um Portal que possui muito conteúdo em banco de dados, mas também possui muitas páginas de conteúdo estático, e gostaria que quando fizesse uma BUSCA PELO SITE fossem inclusas todas essas páginas estáticas no resultado da busca. Você já fez algo parecido ou sabe, em termos gerais, qual é a melhor solução para este problema?

 

Agradeço antecipadamente a ajuda.

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei os apelidos da tabelas e funcionou perfeitamente, inclusive consegui incluir na busca todas as tabelas que eu precisava.

 

Só que agora meu script de paginação não funciona. Isso tem relação com o uso do UNION ALL?

 

Fiz uma view com o UNION ALL de todas as tabelas, retornando todo o conteúdo, e estou consultando a view para filtrar os resultados.

 

Minha paginação é feita em ASP usando .RecordCount() .AbsolutePage() ,PageSize(), etc. Parece que tudo retorna -1 agora.

 

Sei que foge do escopo deste tópico, mas talvez alguém possa me dar uma luz. Postarei também este problema na seção ASP.

 

Muito obrigado

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.