Utilização da condição WHERE dentro de um INNER JOIN

05/09/2019

0

Considerem a seguinte tabela:

coluna1 coluna2 coluna3
1 a 0
2 b 0
3 c 0
1 d 1
2 e 1
3 f 1
1 g 2
2 h 2
3 i 2


Pretendo obter este resultado:

coluna1 coluna2 coluna3 coluna1 coluna2 coluna3
1 a 0 1 d 1
2 b 0 2 e 1
3 c 0 3 f 1

A consulta que escrevi é essa:
select * from teste as a
where coluna3 = '0'

INNER JOIN (
select * from teste
where coluna3 = '1'
) as b

ON a.coluna1 = b.coluna1


Obtendo este erro:
ERROR:  syntax error at or near "INNER"
LINE 4: INNER JOIN (
        ^
SQL state: 42601
Character: 47


Tirando a condição where = '0' da primeira tabela, a consulta funciona, mas não me retorna o resultado esperado.
A pergunta é: não é possível usar a condição WHERE com INNER JOIN? Se sim, como? O que está errado nessa sintaxe?
André Carreiro

André Carreiro

Responder

Post mais votado

06/09/2019

Acredito que esse código resolva o teu problema
select *
from (select * from teste
      where coluna3 = '0') a
full outer join (select * from teste
                 where coluna3 = '1') b on (a.coluna1 = b.coluna1)

Tainan Ramos

Tainan Ramos
Responder

Mais Posts

06/09/2019

Jair N.

Não precisa ir tão longe, veja que tu colocou a cláusula "INNER.." após o WHERE da 1ª FROM... o correto seria:

select * from teste as a

INNER JOIN (
select * from teste
where coluna3 = ''1''
) as b

ON a.coluna1 = b.coluna1

where a.coluna3 = ''0''
Responder

06/09/2019

André Carreiro

Não precisa ir tão longe, veja que tu colocou a cláusula "INNER.." após o WHERE da 1ª FROM... o correto seria:

select * from teste as a

INNER JOIN (
select * from teste
where coluna3 = ''1''
) as b

ON a.coluna1 = b.coluna1

where a.coluna3 = ''0''



Obrigado! Era justamente essa regra de sintaxe que eu precisava compreender.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar