Coluna desconhecida, erro: "Unknown column 'T1.t1_imagem' in 'on clause'"

Estou tentando criar uma join com duas tabelas, mas estou recebendo o seguinte erro:

Unknown column ‘T1.t1_imagem’ in ‘on clause’

Aqui está o código:

create view vw_acervo(
Imagem,
Historia)
as
SELECT
  T1.id_imagem as t1_imagem,
  T1.cd_historia as t1_historia,
  T2.id_imagem,
  T3.cd_historia 
FROM
  tb_acervo T1 
   INNER JOIN tb_imagem T2 on (T1.t1_imagem = T2.id_imagem)
   INNER JOIN tb_historia T3 on (T1.t1_historia = T3.cd_historia);

Basicamente, o erro diz que a tabela cujo alias é T1 não possui uma coluna chamada t1_imagem.
Pelo que entendi, T1 refere-se à tabela tb_acervo T1
Tem certeza que ela possui uma coluna chamada t1_imagem?

então, ela tem uma coluna chamada id_imagem, mas tava dando que ela era duplicada e eu vi em outro fórum que a solução era renomear ela com o as para não dar esse erro.

O problema são nos alias (apelido) que você está chamando no INNER JOIN, deve chamar o campo proveniente sem o apelido nesse caso, então, o correto seria:

create view vw_acervo(
Imagem,
Historia)
as
SELECT
  T1.id_imagem as t1_imagem,
  T1.cd_historia as t1_historia,
  T2.id_imagem,
  T3.cd_historia 
FROM
  tb_acervo T1 
   INNER JOIN tb_imagem T2 on (T1.id_imagem  = T2.id_imagem)
   INNER JOIN tb_historia T3 on (T1.cd_historia = T3.cd_historia);

Eu havia tentado fazer desse jeito, mas aí dá o erro “Error Code: 1353. View’s SELECT and view’s field list have different column counts”

ai o problema é outro entendeu! mas, já solucionou o problema de coluna desconhecida (unknown column).

Pelo que entendi desse novo erro, ele diz que o select e o field têm campos diferentes. Se eu colocar os dois sem os alias para que ficam iguais, dá que a coluna é duplicada. Se eu colocar com os alias, dá que a coluna não existe.
Complicado :confused:

A quantidade de colunas está diferente da SQL acho que seria assim:

create view vw_acervo(t1_imagem, t1_historia,id_imagem,cd_historia )
as
SELECT
  T1.id_imagem as t1_imagem,
  T1.cd_historia as t1_historia,
  T2.id_imagem,
  T3.cd_historia 
FROM
  tb_acervo T1 
   INNER JOIN tb_imagem T2 on (T1.id_imagem  = T2.id_imagem)
   INNER JOIN tb_historia T3 on (T1.cd_historia = T3.cd_historia);

Eu não tenho como testar mas, acho que isso resolve

Aaaah, agora foi! Muito obrigada mesmo pela ajuda <3

Entendeu que a quantidade aqui:

vw_acervo(t1_imagem, t1_historia,id_imagem,cd_historia )

tem que igual da SQL

T1.id_imagem as t1_imagem,
T1.cd_historia as t1_historia,
T2.id_imagem,
T3.cd_historia 

ou seja 4 colunas?

Agora, sim! Eu pensei que por serem a “mesma” coluna, só precisaria ir uma vez, mas foi erro de lógica! Ainda estou tendo dificuldades com esse tipo de coisa!
Muito obrigada pela ajuda, entendi o que aconteceu e vou tentar fazer outras para treinar essa questão e ver se não cometo o mesmo erro de novo.

1 curtida