[firebase-br] Select com 4 tabelas, exibindo coluna vazia....
Edson de Paulo
epaulo2002 em yahoo.com.br
Qua Out 3 14:24:50 -03 2007
Olá Simone, acho que o pessoal já tirou sua dúvida, mas sugiro que você
utilize uma ferramenta visual no começo para criar seus selects. Por
exemplo no "IB Expert", utilize em "tools / Query Builder", lá você pode
visualizar as ligações entre as tabelas (Foreign Keys) e clicando com o
botão direito sobre as ligações você indica o tipo de ligação(INNER
JOIN, LEFT OUTER JOIN, RIGTH OUTER JOIN).
Indico isso apenas como uma opção didática, depois de que você entender
bem o conceito dos joins você escrevê-los sozinha.
OBS: Da forma abaixo até funcionaria, em oracle ou my sql por exemplo.
Utilizando o (+) ao lado da tabela onde "talvez" não exista o valor. No
seu exemplo:
Select A.CURSO, A.SERIE, A.TURMA, A.MATRICULA, B.NOTA, C.FALTA, D.NOME
From TabelaA A, TabelaB B, TabelaC C, TabelaD D
Where (A.CURSO = B.CURSO)
And (A.SERIE = B.SERIE)
And (A.TURMA = B.TURMA)
And (A.MATRICULA = B.MATRICULA)
And (C.CURSO(+) = B.CURSO)
And (C.SERIE(+) = B.SERIE)
And (C.TURMA(+) = B.TURMA)
And (C.MATRICULA(+) = B.MATRICULA)
And (A.REGISTRO = D.REGISTRO )
Order By A.MATRICULA
Simone escreveu:
> Boa tarde!
>
> Gostaria de ajuda pra montagem de um Select, onde uso 4 tabelas, até aí, td
> bem, o problema, é que preciso que mesmo que o registro não seja encontrado
> em determinada tabela, ele exiba a coluna vazia (ou zerada), tem como?!?
>
> Exemplo:
> TabelaA - CURSO, SERIE, TURMA, MATRICULA, REGISTRO
> TabelaB - CURSO, SERIE, TURMA, MATRICULA, NOTA
> TabelaC - CURSO, SERIE, TURMA, MATRICULA, FALTA
> TabelaD - REGISTRO, NOME
>
> Select A.CURSO, A.SERIE, A.TURMA, A.MATRICULA, B.NOTA, C.FALTA, D.NOME
>>From TabelaA A, TabelaB B, TabelaC C, TabelaD D
> Where (A.CURSO = B.CURSO) And
> (A.SERIE = B.SERIE) And
> (A.TURMA = B.TURMA) And
> (A.MATRICULA = B.MATRICULA) And
> (C.CURSO = B.CURSO) And
> (C.SERIE = B.SERIE) And
> (C.TURMA = B.TURMA) And
> (C.MATRICULA = B.MATRICULA) And
> (A.REGISTRO = D.REGISTRO )
> Order By A.MATRICULA
>
> O problema é que se por acaso o aluno de matricula "X" não tiver lançamento
> de Falta, por exemplo (TabelaC), ele não traz o registro....
>
> Preciso que, mesmo que ele não encontre nota (TabelaB) ou Falta (TabelaC)
> ele traga sempre o aluno (mas tem que ter lançamento em pelo menos em uma
> duas tabelas (nota ou falta)
> CURSO SERIE TURMA MATRICULA NOTA FALTA NOME
> 003 001 XXX X301 10,0 1
> MARIA
> 003 001 XXX X302 9,0
> JOSÉ
> 003 001 XXX X301 2
> PEDRO
> 003 001 XXX X301 10,0 1
> JORGE
>
> Tem como montar um Select assim?!?
> Li sobre Select / Where / Join / Union....mas não encontrei nada parecido...
> Se alguem tiver uma dica, pode me passar, por favor?
> Desde jpa, obrigada!
> Simone
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
--
Edson de Paulo
Curitiba - PR
Mais detalhes sobre a lista de discussão lista