Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

problema utilizando o pdo em uma quary com inner join

tenho três tabelas em postgres: moral

imagem de um select da tabela moral

Ordem

imagem de um select da tabela ordem

estou rodando o seguinte sql pela fetch_all, fech_assoc


select 
    principal.*, moral.* as moral, ordem.* as ordem 
from 
    "Mecanicas".tendencia principal 
        inner join "Mecanicas".moral as moral on moral.cod = principal.fk_moral
        inner join "Mecanicas".ordem as ordem on ordem.cod = principal.fk_ordem 
where 
    principal.cod = 3

mas o php esta misturando o conteudo das tabelas e acaba nem trazendo alguns dos valores, pesquisei em alguns foruns eles disseram que era pelo php não ser fortemente tipado ai ele estaria confundindo as tabelas por terem colunas com o mesmo nome, tentei colocar um alias nas colunas que trazem os valores das tabelas relacionadas mas não deu certo.

Alguma forma de contornar a situação ou o problema é outro e qual seria?

2 respostas
solução!

Olá, Gabriel!

Entendo sua frustração com essa situação. O problema que você está enfrentando é comum quando se trabalha com JOINs em SQL e PHP, especialmente quando as tabelas têm colunas com o mesmo nome.

A solução que você tentou, de usar alias para as colunas, é a correta. No entanto, é importante lembrar que o alias deve ser aplicado a cada coluna individualmente, e não à tabela como um todo.

Aqui está um exemplo de como você poderia reescrever sua consulta:

select 
    principal.*,
    moral.nome as moral_nome, moral.cod as moral_cod,
    ordem.nome as ordem_nome, ordem.cod as ordem_cod
from 
    "Mecanicas".tendencia principal 
        inner join "Mecanicas".moral as moral on moral.cod = principal.fk_moral
        inner join "Mecanicas".ordem as ordem on ordem.cod = principal.fk_ordem 
where 
    principal.cod = 3

Neste exemplo, cada coluna das tabelas 'moral' e 'ordem' recebeu um alias único (moral_nome, moral_cod, ordem_nome, ordem_cod). Isso deve evitar a confusão que o PHP estava fazendo ao misturar as colunas de diferentes tabelas.

Espero ter ajudado e bons estudos!

obrigado pela ajuda matheus