Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Relacionamento


Fernandinha

Pergunta

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 para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...