Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Relacionamento


Fernandinha

Question

Boa noite pessoal,

Estou com um problema, tenho duas tabelas uma tem uma lista de dias que alunos terão aulas e outras tem apenas dias em que os alunos registraram falta na turma. Gostaria de juntar as duas, mas com inner join não está funcionando. segue abaixo...

Tabela de Frequencia

Id IdTurmaPQ DtRegistroFrequencia RegistroFrequencia IdMotivoSuspensaoPQ HrRealizadas MinRealizados IdUsuarioEvidencia DtEvidencia TpUsuarioEvidencia

45 11160 2011-08-01 00:00:00.000 R NULL 5 0 791899 2011-08-29 21:00:51.047 Q

46 11160 2011-08-02 00:00:00.000 R NULL 5 0 791899 2011-08-29 21:01:42.670 Q

48 11160 2011-08-03 00:00:00.000 R NULL 5 0 791899 2011-08-31 17:53:09.843 Q

50 11160 2011-08-05 00:00:00.000 R NULL 5 0 791899 2011-08-31 17:54:00.000 Q

51 11160 2011-08-08 00:00:00.000 R NULL 5 0 791899 2011-08-31 17:55:32.797 Q

52 11160 2011-08-09 00:00:00.000 R NULL 5 0 791899 2011-08-31 17:56:07.093 Q

66 11160 2011-08-10 00:00:00.000 R NULL 5 0 791899 2011-08-31 17:58:21.343 Q

67 11160 2011-08-11 00:00:00.000 R NULL 5 0 791899 2011-08-31 17:59:17.627 Q

68 11160 2011-08-12 00:00:00.000 R NULL 5 0 791899 2011-08-31 18:00:04.890 Q

FrequenciaAluno

IdFrequenciaPQ IdMatriculaPQ StatusFrequencia DtRegistroFrequencia

46 1200152 J 2011-08-02 00:00:00.000

48 1200152 A 2011-08-03 00:00:00.000

50 1200152 J 2011-08-05 00:00:00.000

51 1200152 A 2011-08-08 00:00:00.000

52 1200152 A 2011-08-09 00:00:00.000

67 1200152 A 2011-08-11 00:00:00.000

68 1200152 A 2011-08-12 00:00:00.000

Meu select é esse:

SELECT

FREQAL.IdFrequenciaPQ,

FREQAL.IdMatriculaPQ,

FREQAL.StatusFrequencia,

FREQ.DtRegistroFrequencia

FROM FREQUENCIAALUNO_PQ FREQAL

RIGHT JOIN FREQUENCIA_PQ FREQ ON FREQAL.IdFrequenciaPQ = FREQ.Id

WHERE FREQAL.IdMatriculaPQ IN (1200152)

Meu retorno deveria ser:

IdFrequenciaPQ IdMatriculaPQ StatusFrequencia DtRegistroFrequencia

null null P 2011-08-01 00:00:00.000

46 1200152 J 2011-08-02 00:00:00.000

48 1200152 A 2011-08-03 00:00:00.000

50 1200152 J 2011-08-05 00:00:00.000

51 1200152 A 2011-08-08 00:00:00.000

52 1200152 A 2011-08-09 00:00:00.000

67 1200152 A 2011-08-11 00:00:00.000

68 1200152 A 2011-08-12 00:00:00.000

Obrigada por ajudar....

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Bom dia Fernandinha,

Seu select está teoricamente correto. O problema que estou vendo é na cláusula WHERE. Faça o seguinte: troque o WHERE por AND. Isto fará com que o filtro fique contido no relacionamento entre as tabelas.

Assim aparecerá não somente 1, mas 2 registros a mais no resultado.

Perceba que: na primeira tabela você tem 9 registros. Na segunda 7 registros. Se fizer um relacionamento utilizando o RIGHT, você terá 9 registros como resultado, e não 8 registros. Faça os testes...

SELECT 
FREQAL.IdFrequenciaPQ, 
FREQAL.IdMatriculaPQ,
FREQAL.StatusFrequencia,
FREQ.DtRegistroFrequencia
FROM FREQUENCIAALUNO_PQ FREQAL
RIGHT JOIN FREQUENCIA_PQ FREQ ON FREQAL.IdFrequenciaPQ = FREQ.Id 
AND FREQAL.IdMatriculaPQ IN (1200152)

Link to comment
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
Answer this question...

×   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.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...