Fórum Varios Relacionamento com INNER JOIN em um mesmo SELECT, PostgreSQL #505651
29/12/2014
0
SELECT base.cliente.*, base.tipo_contato.tipo
FROM base.cliente
LEFT JOIN base.tipo_contato ON (base.tipo_contato.cod = base.cliente.cod_cont_t1)
Assim ele me retorna normal, um campo chamado tipo1..mais não consigo consultar com mais relacionamento no mesmo SELECT!!! se alguém me ajudar agradeço muitooo!
Jefferson Pigossi
Curtir tópico
+ 0Post mais votado
29/12/2014
Conforme citado em sua pergunta "...cod_tipo_contato1, cod_tipo_contato2..."
Não coerente:
SELECT base.cliente.*, base.tipo_contato.tipo
FROM base.cliente
LEFT JOIN base.tipo_contato
ON (base.tipo_contato.cod = base.cliente.cod_cont_t1)
veja deste modo:
SELECT cli.*
, tc1.*
, tc2.*
FROM base.cliente cli
LEFT JOIN base.tipo_contato tc1
ON (tc1.cod = cli.cod_cont_t1)
LEFT JOIN base.tipo_contato tc2
ON (tc2.cod = cli.cod_cont_t2)
...
OBS: O relacionamento é do tipo "LEFT JOIN" pois pode ele não existir no relacionamento entre as entidades.
Atc
Jair N.
Gostei + 1
Mais Posts
29/12/2014
Joel Rodrigues
Você pode usar vários joins sem muito mistério:
SELECT ... FROM Tabela1 INNER JOIN Tabela2 ON ... INNER JOIN Tabela3 ON ... LEFT JOIN Tabela4 ON ...
Gostei + 0
29/12/2014
Marisiana Battistella
Porque vc está utilizando o LEFT JOIN?
O ideal não seria utilizar o INNER JOIN?
Gostei + 0
29/12/2014
Jefferson Pigossi
base.cliente.cod_cont_t1
base.cliente.cod_cont_t2
base.cliente.cod_cont_t3
base.cliente.cod_cont_t4
base.cliente.cod_cont_t5
queria pegar nome do TIPO de contato desses campos entendeu?
Gostei + 0
29/12/2014
Jefferson Pigossi
Gostei + 0
29/12/2014
Jefferson Pigossi
Codigo ficou assim agora:
SELECT base.cliente.*, tc1.tipo, tc2.tipo
FROM base.cliente"
LEFT JOIN base.tipo_contato tc1 ON (tc1.cod = base.cliente.cod_cont_t1)
LEFT JOIN base.tipo_contato tc2 ON (tc2.cod = base.cliente.cod_cont_t2)
WHERE base.cliente.cod = ", cod));
Gostei + 0
29/12/2014
Marisiana Battistella
Vc pode definir o nome do retorno de cada coluna, mas para isso não pode utilizar o " select base.cliente.* ", informe os nomes das colunas que contém os dados que vc precisa obter no retorno e defina um nome para a coluna.
Por exemplo:
SELECT base.cliente.*,
tc1.tipo as tipo_1,
tc2.tipo as tipo_2
FROM base.cliente
LEFT JOIN base.tipo_contato tc1 ON (tc1.cod = base.cliente.cod_cont_t1)
LEFT JOIN base.tipo_contato tc2 ON (tc2.cod = base.cliente.cod_cont_t2)
WHERE base.cliente.cod = ", cod));
Gostei + 1
29/12/2014
Jefferson Pigossi
Jair A.N e Marisiana
Agora o código ficou assim:
SELECT base.cliente.*,
tc1.tipo AS cont_tp1,
tc2.tipo AS cont_tp2,
tc3.tipo AS cont_tp3,
tc4.tipo AS cont_tp4,
tc5.tipo AS cont_tp5
FROM base.cliente
LEFT JOIN base.tipo_contato tc1 ON (tc1.cod = base.cliente.cod_cont_t1)
LEFT JOIN base.tipo_contato tc2 ON (tc2.cod = base.cliente.cod_cont_t2)
LEFT JOIN base.tipo_contato tc3 ON (tc3.cod = base.cliente.cod_cont_t3)
LEFT JOIN base.tipo_contato tc4 ON (tc4.cod = base.cliente.cod_cont_t4)
LEFT JOIN base.tipo_contato tc5 ON (tc5.cod = base.cliente.cod_cont_t5)
WHERE base.cliente.cod = , cod));
Gostei + 0
29/12/2014
Marisiana Battistella
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)