Problemas com Join
Pessoal estou com o seguinte problema:
Tenho um banco de dados de Alunos. Existe uma tabela de Notas onde os registros sao gravados assim:
O problema é que estou usando um join para me retornar os valores assim:
Mas ele não está me retornando desta forma. Se houver as duas avaliações, ele retorna beleza, se a primeira não existir ou a segunda ele não retorna nada, conforme exemplo abaixo:
O código que eu estou usando é o código abaixo:
Alguem poderia me ajudar?
O banco e MS-SQL
Daniel Miranda Cruz
Tenho um banco de dados de Alunos. Existe uma tabela de Notas onde os registros sao gravados assim:
===================================== CodAluno Ano Semestre CodDisciplina Avaliacao Nota ===================================== 0001 2005 1 10 1 6,5 0001 2005 1 10 2 7,0 0002 2005 1 10 2 4,0
O problema é que estou usando um join para me retornar os valores assim:
===================================== CodAluno Ano Semestre CodDisciplina Nota1 Nota2 ===================================== 0001 2005 1 10 6,5 7,0 0002 2005 1 10 4,0
Mas ele não está me retornando desta forma. Se houver as duas avaliações, ele retorna beleza, se a primeira não existir ou a segunda ele não retorna nada, conforme exemplo abaixo:
===================================== CodAluno Ano Semestre CodDisciplina Nota1 Nota2 ===================================== 0001 2005 1 10 6,5 7,0
O código que eu estou usando é o código abaixo:
Select * from (Select * from((Select CodAluno as c1,nota as n1,ano as a1, Coddisciplina as d1,Periodo as p1 from notas where avaliacao=1) as t1 left join (Select CodAluno as c2, nota as n2,ano as a2, Coddisciplina as d2, Periodo as p2 from notas where avaliacao=2) t2 on(t1.C1=t2.C2 and t1.a1=t2.a2 and t1.d1=t2.d2 and t1.p1=t2.p2))) as normal where normal.a1=2005 and normal.p1=1
Alguem poderia me ajudar?
O banco e MS-SQL
Daniel Miranda Cruz
Daniel_mc
Curtidas 0
Respostas
Orpolonio
11/07/2005
1-)Leia sobre o select case....ira resolver seu problema.
2-)Uma SP faz isso tranquilamente e com um desempenho melhor.
3-)Sub-Selects como o q esta usando em uma tabela muito populosa vai matar seu servidor.
4-)Select * não é recomendado, e sim select campo1, campo2 de preferencia o 1 ser a PK e depois seguidos de campos integer, numeric, date e varchar.
2-)Uma SP faz isso tranquilamente e com um desempenho melhor.
3-)Sub-Selects como o q esta usando em uma tabela muito populosa vai matar seu servidor.
4-)Select * não é recomendado, e sim select campo1, campo2 de preferencia o 1 ser a PK e depois seguidos de campos integer, numeric, date e varchar.
GOSTEI 0