Jump to content
Sign in to follow this  
Lucas

Consulta Sql Com Dados Do Aluno E Filiação

Recommended Posts

Pessoal, tudo bem?

Tô apanhando aqui. Preciso de uma consulta para trazer os dados do aluno conforme eu fiz abaixo:

SELECT
DISTINCT PPS.CODIGO, SL.RA, PPS.NOME, PPS.DTNASCIMENTO, PPS.SEXO, PPS.NACIONALIDADE, PPS.RUA, PPS.NUMERO, PPS.COMPLEMENTO,
PPS.BAIRRO, PPS.ESTADO, PPS.CIDADE, PPS.CEP, PPS.PAIS, PPS.TELEFONE1 AS TELFIXO, PPS.TELEFONE2 AS TELCELULAR, PPS.CARTIDENTIDADE, PPS.UFCARTIDENT, PPS.ORGEMISSORIDENT, PPS.CPF,
(SELECT PP.NOME FROM PPESSOA PP
INNER JOIN SPESSOA SP ON PP.CODIGO = SP.CODPESSOAPAI
WHERE PP.CODIGO = SP.CODIGO AND PP.CODIGO = SP.CODPESSOAPAI
AND PP.CODIGO = PPS.CODIGO)AS PAI,
(SELECT PP.DTNASCIMENTO FROM SPESSOA SP
INNER JOIN PPESSOA PP ON PP.CODIGO = SP.CODPESSOAPAI
WHERE PP.CODIGO = SP.CODIGO
AND PP.CODIGO = PPS.CODIGO)AS DTNASCPAI,
(SELECT PP.NATURALIDADE FROM SPESSOA SP
INNER JOIN PPESSOA PP ON PP.CODIGO = SP.CODPESSOAPAI
WHERE PP.CODIGO = SP.CODIGO
AND PP.CODIGO = PPS.CODIGO)AS NATPAI,
(SELECT PP.NOME FROM SPESSOA SP
INNER JOIN PPESSOA PP ON PP.CODIGO = SP.CODPESSOAMAE
WHERE PP.CODIGO = SP.CODIGO
AND PP.CODIGO = PPS.CODIGO)AS MAE,
(SELECT PP.DTNASCIMENTO FROM SPESSOA SP
INNER JOIN PPESSOA PP ON PP.CODIGO = SP.CODPESSOAMAE
WHERE PP.CODIGO = SP.CODIGO
AND PP.CODIGO = PPS.CODIGO)AS DTNASCMAE,
(SELECT PPS.NATURALIDADE FROM SPESSOA SP
INNER JOIN PPESSOA PP ON PP.CODIGO = SP.CODPESSOAMAE
WHERE PP.CODIGO = SP.CODIGO
AND PP.CODIGO = PPS.CODIGO)AS NATMAE,
(SELECT PPS.NOME FROM SALUNO SA
INNER JOIN PPESSOA PP ON PP.CODIGO = SA.CODPESSOARACA
WHERE PP.CODIGO = SA.CODPESSOA
AND PP.CODIGO = PPS.CODIGO)AS RESPACAD
FROM PPESSOA PPS
INNER JOIN SALUNO SL ON SL.CODPESSOA = PPS.CODIGO
WHERE SL.CODPESSOA IS NOT NULL
porém ela não está trazendo para mim o nome do pai, o nome da mãe, as datas de nascimento deles e suas naturalidades. Alguém pode analisar a consulta e me dizer onde estou errando? Desde já agradeço.
Edited by Lucas

Share this post


Link to post
Share on other sites

Mensagem Automática do Fórum RM

Este tópico foi verificado pela moderação/administração que foi postado em área errada !!

Por favor, verifique para que não postem em áreas indevidas. Vamos manter o Fórum o mais organizado possível.

Movido então, de : "Areas RestritasRestrito VIP e Equipe Fórum RM" para: "Sistemas RM[RM] SQL e Bancos de Dados".

Share this post


Link to post
Share on other sites

Lucas boa tarde.

Sou novo aqui no forum então nem sei se essa sua dúvida já foi resolvida.

Dei uma olhada na sua consulta e reparei o seguinte, nas suas subqueries que você faz pra retornar os dados do pai e da mãe do aluno você faz duas comparações distintas para o mesmo campo, uma no JOIN e outra no WHERE:

(SELECT PP.DTNASCIMENTO
   FROM SPESSOA SP
        INNER JOIN PPESSOA PP ON
              PP.CODIGO = SP.CODPESSOAPAI
  WHERE PP.CODIGO = SP.CODIGO
    AND PP.CODIGO = PPS.CODIGO) AS DTNASCPAI,

Aqui, no caso, você compara no INNER JOIN o PP.CODIGO com o SP.CODPESSOAPAI e no WHERE você compara o PP.CODIGO com SP.CODIGO. Com esta comparação a pessoa tem que ser igual ao pai dessa mesma pessoa, por isso não traz nada.

Abaixo eu copio um código que eu tinha aqui e dei uma adaptada pro seu uso. Veja se te ajuda. Eu não trabalhei com subqueries, apenas com um JOIN diretamente do SPESSOA:

SELECT PPESSOA_ALUNO.CODIGO        AS ALUNO_CODPESSOA,
       SALUNO.RA                   AS ALUNO_RA,
       PPESSOA_ALUNO.NOME          AS ALUNO_NOME,
       PPESSOA_ALUNO.DTNASCIMENTO  AS ALUNO_DATA_NASCIMENTO,
       PPESSOA_ALUNO.SEXO          AS ALUNO_SEXO,
       PPESSOA_ALUNO.NACIONALIDADE AS ALUNO_NACIONALIDADE,
       NACIONALIDADE_ALUNO.DESCRICAO
                                   AS ALUNO_NACIONALIDADE_DESCRICAO,
       PPESSOA_ALUNO.NATURALIDADE  AS ALUNO_NATURALIDADE,
       PPESSOA_ALUNO.RUA           AS ALUNO_ENDERECO_RUA,
       PPESSOA_ALUNO.NUMERO        AS ALUNO_ENDERECO_NUMERO,
       PPESSOA_ALUNO.COMPLEMENTO   AS ALUNO_ENDERECO_COMPLEMENTO,
       PPESSOA_ALUNO.BAIRRO        AS ALUNO_ENDERECO_BAIRRO,
       PPESSOA_ALUNO.CIDADE        AS ALUNO_ENDERECO_CIDADE,
       PPESSOA_ALUNO.ESTADO        AS ALUNO_ENDERECO_UF,
       PPESSOA_ALUNO.CEP           AS ALUNO_ENDERECO_CEP,
       PPESSOA_ALUNO.PAIS          AS ALUNO_ENDERECO_PAIS,
       PPESSOA_ALUNO.TELEFONE1     AS ALUNO_TELEFONE_FIXO,
       PPESSOA_ALUNO.TELEFONE2     AS ALUNO_TELEFONE_CELULAR,
       PPESSOA_ALUNO.CARTIDENTIDADE
                                   AS ALUNO_IDENTIDADE,
       PPESSOA_ALUNO.UFCARTIDENT   AS ALUNO_IDENTIDADE_UF,
       PPESSOA_ALUNO.ORGEMISSORIDENT
                                   AS ALUNO_IDENTIDADE_EMISSOR,
       PPESSOA_ALUNO.CPF           AS ALUNO_CPF,
       PPESSOA_PAI.NOME            AS PAI_NOME,
       PPESSOA_PAI.DTNASCIMENTO    AS PAI_DATA_NASCIMENTO,
       PPESSOA_PAI.NACIONALIDADE   AS PAI_NACIONALIDADE,
       NACIONALIDADE_PAI.DESCRICAO AS PAI_NACIONALIDADE_DESCRICAO,
       PPESSOA_PAI.NATURALIDADE    AS PAI_NATURALIDADE,
       PPESSOA_MAE.NOME            AS MAE_NOME,
       PPESSOA_MAE.DTNASCIMENTO    AS MAE_DATA_NASCIMENTO,
       PPESSOA_MAE.NACIONALIDADE   AS MAE_NACIONALIDADE,
       NACIONALIDADE_MAE.DESCRICAO AS MAE_NACIONALIDADE_DESCRICAO,
       PPESSOA_MAE.NATURALIDADE    AS MAE_NATURALIDADE
  FROM PPESSOA AS PPESSOA_ALUNO
       INNER JOIN SALUNO ON
             PPESSOA_ALUNO.CODIGO = SALUNO.CODPESSOA
        LEFT JOIN PCODNACAO AS NACIONALIDADE_ALUNO ON
             PPESSOA_ALUNO.NACIONALIDADE = NACIONALIDADE_ALUNO.CODCLIENTE
        LEFT JOIN SPESSOA ON
             PPESSOA_ALUNO.CODIGO = SPESSOA.CODIGO
        LEFT JOIN PPESSOA AS PPESSOA_PAI ON
             SPESSOA.CODPESSOAPAI = PPESSOA_PAI.CODIGO
        LEFT JOIN PCODNACAO AS NACIONALIDADE_PAI ON
             PPESSOA_PAI.NACIONALIDADE = NACIONALIDADE_PAI.CODCLIENTE
        LEFT JOIN PPESSOA AS PPESSOA_MAE ON
             SPESSOA.CODPESSOAPAI = PPESSOA_MAE.CODIGO
        LEFT JOIN PCODNACAO AS NACIONALIDADE_MAE ON
             PPESSOA_MAE.NACIONALIDADE = NACIONALIDADE_MAE.CODCLIENTE
 WHERE SALUNO.CODPESSOA is not null

Espero que te ajude.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.