Com base no DER, qual código SQL abaixo está correto para exibir o nome do correntista, o município de nascimento, a descrição da UF de nascimento, a data de nascimento, endereço (tipo, e nome) e o número do endereço dos correntistas que nasceram no ano de 1971.
a.
SELECT CR.NM_NOME, TM.NM_MUNICÍPIO, TE.NM_UF,
CR.DT_NASCIMENTO, TL.DS_TIPO, TL.NM_NOME, CR.NR_NUMERO
FROM TAB_CORRENTISTA CR JOIN TAB_MUNICÍPIO TM
ON CR.ID_MUNICÍPIO = TM.ID_MUNICÍPIO
JOIN TAB_LOGRADOURO TL
ON CR.ID_CEP = TL.ID_CEP
WHERE TO_CHAR(CR.DT_NASCIMENTO, 'YYYY') = '1971'
b.
SELECT CR.NM_NOME, TM.NM_MUNICÍPIO, TE.NM_UF,
CR.DT_NASCIMENTO, TL.DS_TIPO, TL.NM_NOME, CR.NR_NUMERO
FROM TAB_CORRENTISTA CR JOIN TAB_MUNICÍPIO TM
ON CR.ID_MUNICÍPIO = TM.ID_MUNICÍPIO
JOIN TAB_ESTADO TE
ON TM.NM_UF = TE.NM_UF
JOIN TAB_LOGRADOURO TL
ON CR.ID_CEP = TL.ID_CEP
WHERE TO_CHAR(CR.DT_NASCIMENTO, 'YYYY') = '1971'
c.
SELECT CR.NM_NOME, TM.NM_MUNICÍPIO, TE.NM_UF,
CR.DT_NASCIMENTO, TL.DS_TIPO, TL.NM_NOME, CR.NR_NUMERO
FROM TAB_CORRENTISTA CR JOIN TAB_MUNICÍPIO TM
ON CR.ID_MUNICÍPIO = TM.ID_MUNICÍPIO
JOIN TAB_ESTADO TE
ON TM.ID_UF = TE.ID_UF
JOIN TAB_LOGRADOURO TL
ON CR.DS_CEP = TL.DS_CEP
WHERE TO_CHAR(CR.DT_NASCIMENTO, 'YYYY') = '1971'
d.
SELECT CR.NM_NOME, TM.NM_MUNICÍPIO, TE.NM_UF,
CR.DT_NASCIMENTO, TL.DS_TIPO, TL.NM_NOME, CR.NR_NUMERO
FROM TAB_CORRENTISTA CR JOIN TAB_MUNICÍPIO TM
ON CR.ID_MUNICÍPIO = TM.ID_MUNICÍPIO
JOIN TAB_ESTADO TE
ON TM.ID_UF = TE.ID_UF
JOIN TAB_LOGRADOURO TL
ON CR.ID_CEP = TL.ID_CEP
WHERE TO_CHAR(CR.DT_NASCIMENTO, 'YYYY') = '1971'
e.
SELECT CR.NM_NOME, TM.NM_MUNICÍPIO, TE.NM_UF,
CR.DT_NASCIMENTO, TL.DS_TIPO, TL.NM_NOME, CR.NR_NUMERO
FROM TAB_CORRENTISTA CR JOIN TAB_MUNICÍPIO TM
ON CR.ID_CEP = TM.ID_CEP
JOIN TAB_ESTADO TE
ON TM.ID_UF = TE.ID_UF
JOIN TAB_LOGRADOURO TL
ON CR.ID_CEP = TL.ID_CEP
WHERE TO_CHAR(CR.DT_NASCIMENTO, 'YYYY') = '1971'
Lista de comentários
Resposta:
A alternativa correta é a letra b:
SELECT CR.NM_NOME, TM.NM_MUNICÍPIO, TE.NM_UF,
CR.DT_NASCIMENTO, TL.DS_TIPO, TL.NM_NOME, CR.NR_NUMERO
FROM TAB_CORRENTISTA CR JOIN TAB_MUNICÍPIO TM
ON CR.ID_MUNICÍPIO = TM.ID_MUNICÍPIO
JOIN TAB_ESTADO TE
ON TM.NM_UF = TE.NM_UF
JOIN TAB_LOGRADOURO TL
ON CR.ID_CEP = TL.ID_CEP
WHERE TO_CHAR(CR.DT_NASCIMENTO, 'YYYY') = '1971'
Explicação:
A tabela TAB_ESTADO é utilizada para obter a descrição do estado de nascimento do correntista, e não possui ligação direta com a tabela TAB_CORRENTISTA, mas sim com a tabela TAB_MUNICÍPIO através do campo NM_UF.
A tabela TAB_LOGRADOURO é ligada à tabela TAB_CORRENTISTA através do campo ID_CEP, e não DS_CEP.
A tabela TAB_CORRENTISTA é ligada à tabela TAB_MUNICÍPIO através do campo ID_MUNICÍPIO, e não ID_CEP.