Travei
30/11/2018
0
Exibir todos os correntistas que tem o mesmo tipo de conta do correntista “MISAEL PINHEIRO DA SILVA JUNIOR”, mostrando nome do cliente, CEP, conta,
saldo da conta, tipo da conta, endereço do cliente (nome e número do endereço) e município do cliente, ordenando pelo nome em ordem decrescente.
SELECT COR.NM_NOME, LGR.ID_CEP, CON.ID_CONTA, CON.VL_SALDO, TI.NM_TIPO_CONTA, LGR.NM_NOME, MUN.NM_MUNICIPIO
FROM TAB_CONTA CON
INNER JOIN TAB_CORRENTISTA COR
ON CON.ID_CORRENTISTA = COR.ID_CORRENTISTA
INNER JOIN TAB_MUNICIPIO MUN
ON COR.ID_MUNICIPIO = MUN.ID_MUNICIPIO
INNER JOIN TAB_LOGRADOURO LGR
ON MUN.ID_MUNICIPIO = LGR.ID_MUNICIPIO
INNER JOIN TAB_TIPO_CONTA TI
ON CON.ID_TIPO_CONTA = TI.ID_TIPO_CONTA
WHERE COR.NM_NOME LIKE
Eu travei aqui e na realidade não sei se está certo, me ajudem por favor...
Julio Cesar
Posts
30/11/2018
Ricardo Pestana
SELECT COR.NM_NOME, LGR.ID_CEP, CON.ID_CONTA, CON.VL_SALDO, TI.NM_TIPO_CONTA, LGR.NM_NOME, MUN.NM_MUNICIPIO
FROM TAB_CONTA CON
INNER JOIN TAB_CORRENTISTA COR
ON CON.ID_CORRENTISTA = COR.ID_CORRENTISTA
INNER JOIN TAB_MUNICIPIO MUN
ON COR.ID_MUNICIPIO = MUN.ID_MUNICIPIO
INNER JOIN TAB_LOGRADOURO LGR
ON MUN.ID_MUNICIPIO = LGR.ID_MUNICIPIO
INNER JOIN TAB_TIPO_CONTA TI
ON CON.ID_TIPO_CONTA = TI.ID_TIPO_CONTA
WHERE CON.ID_TIPO_CONTA IN (SELECT ID_TIPO_CONTA FROM TAB_CONTA WHERE NM_NOME LIKE 'MISAEL PINHEIRO DA SILVA JUNIOR');
30/11/2018
Julio Cesar
30/11/2018
Ricardo Pestana
Julio,
Testa esse select, se ele funcionar vc substituí ele na subquery ...
SELECT C.ID_TIPO_CONTA FROM TAB_CONTA C INNER JOIN TAB_CORRENTISTA CLI ON CLI.ID_CORRENTISTA = C.ID_CORRENTISTA
WHERE CLI.NM_NOME LIKE 'MISAEL PINHEIRO DA SILVA JUNIOR'
30/11/2018
Julio Cesar
30/11/2018
Owl
Segue uma sugestão que pode ser bem interessante também.
O tipo da conta do cliente de nome 'MISAEL PINHEIRO DA SILVA JUNIOR', é uma condição que pré determina o resultado da tua consulta. Sendo assim é possível realizar uma consulta somente para pegar o tipo da conta desse cliente e atribuir isso numa variável, onde o resultado dessa variável você utiliza na sua consulta. A vantagem é que dessa forma você não realiza uma sub-consulta toda vez que chega na hora de verificar o tipo da conta do cliente, o que no caso de um banco bastante populado pode levar muito tempo. A ordenação do resultado está na última linha. Segue:
--- SETANDO O TIPO DE CONTA PARA UMA VARIÁVEL --- SET @TIPO_CONTA = (SELECT A.TIPO_CONTA FROM TAB_CORRENTISTA A, TAB_CONTA B WHERE A.NM_NOME = 'MISAEL PINHEIRO DA SILVA JUNIOR' AND A.ID_CORRENTISTA = B.ID_CORRENTISTA;) SELECT COR.NM_NOME , LGR.ID_CEP , CON.ID_CONTA , CON.VL_SALDO , TI.NM_TIPO_CONTA, LGR.NM_NOME , MUN.NM_MUNICIPIO FROM TAB_CONTA CON INNER JOIN TAB_CORRENTISTA COR ON CON.ID_CORRENTISTA = COR.ID_CORRENTISTA INNER JOIN TAB_MUNICIPIO MUN ON COR.ID_MUNICIPIO = MUN.ID_MUNICIPIO INNER JOIN TAB_LOGRADOURO LGR ON MUN.ID_MUNICIPIO = LGR.ID_MUNICIPIO INNER JOIN TAB_TIPO_CONTA TI ON CON.ID_TIPO_CONTA = @TIPO_CONTA --- USA O TIPO DE CONTA SETADO AQUI ORDER BY COR.NM_NOME DESC; --- ORDENA PELO NOME
Espero ter ajudado, até mais!
03/12/2018
Ricardo Pestana
Coloca o order by, no final da sentença (após a subquery), conforme abaixo:
order by COR.NM_NOME
abraço,
03/12/2018
Julio Cesar
Ricardo muito obrigado, consegui resolver o exercício.<br />
<br />
Owl, no set @Tipo_de_conta( select A.tipo_de_conta<br />
from Tab_Correntista A<br />
<br />
Acontece que o tipo de conta não está na tabela correntista, eu agradeço a ajuda mas deveria ter encaminhado as tabelas utilizadas e as estruturas da mesmas, eu sou bem iniciante em SQL então infelizmente não consegui "reaproveitar" seu código, fiquei confuso.... mas não se sinta culpado por isso, eu que ainda estou iniciando e não entendo bem.....<br />
Enfim, muito obrigado.<br />
<br />
Owl, caso queira me mandar do jeito que você fez antes, aqui está a resposta que deu certo pra mim, basta mudar para o jeito que você fez antes, abraços, tmj!!!!<br />
<br />
SELECT CR.NM_NOME AS "NOME CLIENTE",
TI.NM_TIPO_CONTA AS "TIPO CONTA",
LOGR.ID_CEP AS "CEP",
CN.ID_CONTA AS CONTA,
CN.VL_SALDO AS SALDO,
LOGR.DS_TIPO AS "TIPO",
LOGR.DS_TITULO AS "TITULO",
LOGR.NM_NOME AS "NOME RUA",
MN.NM_MUNICIPIO AS MUNICIPIO
<br />
FROM TAB_CORRENTISTA CR
JOIN TAB_CONTA CN
ON CR.ID_CORRENTISTA = CN.ID_CORRENTISTA
JOIN TAB_LOGRADOURO LOGR
ON CR.ID_CEP = LOGR.ID_CEP
JOIN TAB_MUNICIPIO MN
ON LOGR.ID_MUNICIPIO = MN.ID_MUNICIPIO
JOIN TAB_TIPO_CONTA TI
ON CN.ID_TIPO_CONTA = TI.ID_TIPO_CONTA
WHERE CN.ID_TIPO_CONTA IN ( SELECT CNN.ID_TIPO_CONTA
FROM TAB_CORRENTISTA CRR
JOIN TAB_CONTA CNN
ON CRR.ID_CORRENTISTA = CNN.ID_CORRENTISTA<br />
WHERE CRR.NM_NOME IN ''MISAEL PINHEIRO DA SILVA JUNIOR''<br />
) <br />
ORDER BY CR.NM_NOME DESC<br />
Clique aqui para fazer login e interagir na Comunidade :)