Left Join com vários campos da mesma tabela

11/01/2017

0

Seguinte: Para montar um contrato de locação, tenho duas tabelas. A primeira que é a do contrato, possui alguns campos de relacionamento como id_locador, id_locatario, id_fiador1, id_fiador2 dentre outros. Esses campos são relacionados a uma tabela de pessoas: id, nome, endereco etc. Então todas as pessoas envolvidas no contrato, vem da mesma tabela "pessoas", como fazer esse relacionamento?

Desde já, agradeço a quem interessar possa...
Marques Magalhães

Marques Magalhães

Responder

Post mais votado

11/01/2017

Tenta isso:
SELECT contrato.id_locador,
       locador.nome AS locador_nome,
       contrato.id_locatario,
       locatario.nome AS locatario_nome,
       contrato.id_fiador1,
       fiador1.nome AS fiador1_nome,
       contrato.id_fiador2,
       fiador2.nome AS fiador2_nome
  FROM contrato
  LEFT OUTER JOIN pessoa locador ON contrato.id_locador = locador.id
  LEFT OUTER JOIN pessoa locatario ON contrato.id_locatario = locatario.id
  LEFT OUTER JOIN pessoa fiador1 ON contrato.id_fiador1 = fiador1.id
  LEFT OUTER JOIN pessoa fiador2 ON contrato.id_fiador2 = fiador2.id

Npi Tecnologia

Npi Tecnologia
Responder

Mais Posts

12/01/2017

Marques Magalhães

Bacana, funcionou 100%.

Cada contrato possui um ou dois fiadores, eu preciso reunir todos os fiadores dos
contratos em um relatório (relação de fiadores) "juntar fiador1 e fiador2 na mesma coluna",
é possível fazer isso?

Obrigado pela valiosa colaboração!
Responder

19/01/2017

Npi Tecnologia

tenta isso:

SELECT contrato.id_fiador1,
       fiador1.nome
  FROM contrato
  INNER JOIN pessoa fiador1 ON contrato.id_fiador1 = fiador1.id
 WHERE contrato.codigo = 1
UNION
SELECT contrato.id_fiador2,
       fiador2.nome
  FROM contrato
  INNER JOIN pessoa fiador2 ON contrato.id_fiador2 = fiador2.id
 WHERE contrato.codigo = 1


obs: como não sei o nome do campo que guarda o identificador do contrato, chamei-o do código.
neste exemplo estou trazendo os fiadores do contrato de código 1
Responder

30/08/2018

Lucas

Bom dia, alguem pode me dar uma luz<br />
<br />
tenho essa query abaixo:<br />
<br />
SELECT bairro.ba_bairro AS ba_bairro, count(cadastro.ca_bairro) AS count_ca_outro_bairro, sum(cadastro.ca_bairro) AS sum_ca_bairro FROM (cadastro LEFT JOIN bairro ON bairro.ba_codigo=cadastro.ca_bairro) GROUP BY bairro.ba_bairro<br />
<br />
<br />
que faço uma mysql_fetch_assoc() mostrando o nome do bairro x e o total de registro dele na tabela cadastro<br />
<br />
<br />
sendo que o mesmo existe mas 10 campos chamados:<br />
<br />
<br />
ca_outro_bairro_1,ca_outro_bairro_2,ca_outro_bairro_3,ca_outro_bairro_4,ca_outro_bairro_5,ca_outro_bairro_6,ca_outro_bairro_7,ca_outro_bairro_8,ca_outro_bairro_9,ca_outro_bairro_10<br />
<br />
<br />
eu queria somar todos <br />
pois um cadastro pode morar no bairro x mas tem conhecido no bairro y<br />
<br />
ai eu quero ter um relatório aonde mostra o total por bairro que some o total de cadastro nessas colunas relacionadas acima<br />
<br />
<br />
exemplo o bairro : bairro "centro" existe 20 cadastro na coluna ca_bairro e na coluna ca_outro_bairro_1 tem 10 registro entao no bairro centro vai mostra 30 registro e assim com as outras colunas <br />
<br />
Responder

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

Aceitar