GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Select com joins


#1

Boa Noite, estou tentando fazer um select onde tenho 3 colunas(cdrecebidode,cdrepassadopara,cdTitular) todas tem referencia cliente. Agora estou precisando pegar o nome das 3 puxando o nome , mas nao consigo


#2

Esse CDTITULAR é o cliente


#3

Envia o DER do banco que montamos o join


#4

der???


#5

http://prntscr.com/h9mim5 - cheque

http://prntscr.com/h9mivf - cliente

http://prntscr.com/h9mj7u - status
segue estrutura
eu quero em vez de pegar o id do cdtitular pegar o nome dele,cdrecebidode e o cdrepassado


#6

Vou sugerir uma solução baseada no que entendi da sua questão, que achei um pouco confusa: Você tem uma tabela cheque e tem três chaves estrangeiras para a tabela cliente (cdRecebidoDe, cdRepassadoPara e cdTitular ). Porém, ao invés de fazer um select na tabela cheque e trazer as chaves estrangeiras, você quer trazer o campo cliente.nome.

Vejo que tem duas formas de fazer isso:

1. Ligando cada chave estrangeira de cheque em uma tabela individual de cliente:

select c.descricao, 
       receb.nome as recebido_de,
       repas.nome as repassado_para,
       titular.nome as titular
  from cheque c,
       cliente receb,
       cliente repas,
       cliente titular
 where c.cdRecebidoDe = receb.id
   and c.cdRepassadoPara = repas.id
   and c.cdTitular = titular.id
   and c.id = :parametro:

2. Usar subselect (não recomendo):

select c.descricao,
       (select nome 
          from cliente 
         where id = c.cdRecebidoDe) as recebido_de,
       (select nome 
          from cliente 
         where id = c.cdRepassadoPara) as repassado_para,
       (select nome 
          from cliente 
         where id = c.cdTitular) as titular
  from cheque c
 where c.id = :parametro:

Recomendo a primeira opção, até porque você poderá futuramente trazer mais informações individuais do Cliente para cada tipo.


#7

Entendi segue abaixo o sql

SELECT cdrecebidode.nome, cdrepassadopara.nome, cdtitular.nome, ch.* from cheque ch LEFT JOIN cliente cdrecebidode ON ch.cdrecebidode = cdrecebidode.id LEFT JOIN cliente cdrepassadopara ON ch.cdrepassadopara = cdrepassadopara.id  LEFT JOIN cliente cdtitular ON ch.cdtitular= cdtitular.id ORDER BY ch.id