Ir para conteúdo

POWERED BY:

Arquivado

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

luan_alves

Case para selecionar Join

Recommended Posts

Bom dia a todos,

estou tendo problemas para realizar a seguinte consulta.

Tenho uma tabela que se relaciona com 2 colunas, o relacionamento é feito ou para uma ou para outra.

Tento utilizar a condição Case e não consigo definir qual tabela utilizar no INNER JOIN.

Toda vez que executo recebo a informação de que a query esta errada por causa do CASE.

 

SELECT t.*, u.titulo AS nome, u.sobrenome AS sobrenome
FROM topicos AS t,
 (CASE
             WHEN t.idusuarios != null THEN
                   INNER JOIN usuarios AS u ON t.idusuarios = u.idusuarios
              ELSE
                   INNER JOIN usuarios_forum AS u ON t.idusuarios_forum = u.idusuarios_forum
         END CASE) as u
WHERE t.ativado = 1
ORDER BY data_cadastro DESC

Alguem saberia como posso selecionar tabela diferente na hora de realizar o join ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma solução : Faça uma view que uma (union) as duas tabelas, faça o join por esta view.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma solução : Faça uma view que uma (union) as duas tabelas, faça o join por esta view.

Motta, você poderia me auxiliar como montar esta view , a view em si eu sei montar, mas nunca utilizei union.

Teria como você montar um exemplo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia a todos, consegui resolver o problema seguindo a orientação do Motta.

A solução ficou da seguinte forma.

View

CREATE VIEW `usuariosADMFORUM` AS
SELECT idusuarios_forum AS iduser, titulo AS nome, sobrenome AS sobrenome
FROM usuarios_forum
UNION
SELECT idusuarios AS iduser, titulo AS nome, sobrenome AS sobrenome
FROM turiasu_site.usuarios

E a consulta ficou da seguinte forma.

SELECT idusuarios_forum AS iduser, titulo AS nome, sobrenome AS sobrenome
FROM usuarios_forum
UNION
SELECT idusuarios AS iduser, titulo AS nome, sobrenome AS sobrenome
FROM turiasu_site.usuarios

Compartilhar este post


Link para o post
Compartilhar em outros sites

A consulta ficou igual a view mas entendi.

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.