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);
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
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
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.