Colocar Resposta 
 
Avaliação do Tópico:
  • 0 votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
Access 2007
25-07-2012, 13:50
Mensagem: #11
RE: Access 2007
Apresenta o código.

Progster
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
25-07-2012, 15:21
Mensagem: #12
RE: Access 2007
Não estou a fazer por código, estou a usar o construtor de consultas..
resumindo é assim:
tenho 1 cadeira 15 alunos 1 professor. Tinha esta consulta a dar a lista de formandos por cadeira. Aparecem os 15 sem problemas.
Quis passar a mostrar o nome do professor, então adicionei a tabela do professor à consulta e o campo professor.nome para o nome aparecer. Se tiver apenas 1 professor associado à cadeira, tudo ok, aparece tudo certo. O problema é se tiver 2 ou mais professores.. A lista aparece com os alunos duplicados, 1 vez por cada professor. É isto que quero tentar resolver
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
25-07-2012, 16:18
Mensagem: #13
RE: Access 2007
Olá Smile

Clica com o botão direito do rato no separador da consulta e depois em Vista de SQL, desta forma consegues ver a consulta no "formato" SQL.

Depois para resolveres o teu problema acho que basta adicionares a opção GROUP BY

Podes ver aqui um exemplo da utilização desta opção.

“A neutron walks into a bar and asks how much for a drink. The bartender replies, ‘For you, no charge.’” - Sheldon Cooper
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
25-07-2012, 16:38
Mensagem: #14
RE: Access 2007
Penso que o @nioxys já respondeu à tua questão, em todo o caso para se ter a certeza mostra o código para ver se é mesmo isso que falta.

Progster
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
25-07-2012, 16:41
Mensagem: #15
RE: Access 2007
Ora bem, se eu meter o group by nos critérios, não dá?
Se for pelo SQL, aquilo tem o SELECT -- FROM -- WHERE, meto o GROUP BY antes ou depois do WHERE?
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
25-07-2012, 16:43
Mensagem: #16
RE: Access 2007
Mostra o código.

Progster
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
25-07-2012, 16:47
Mensagem: #17
RE: Access 2007
(25-07-2012 16:38)Progster Escreveu:  Penso que o @nioxys já respondeu à tua questão, em todo o caso para se ter a certeza mostra o código para ver se é mesmo isso que falta.

O código é um pouco mais complicado que isso, tem mais campos associados para além desses, se calhar o problema pode ser pelo SELECT FROM estar mal construído.
Mas tb acho que o problema pode ser por afinal não ser uma consulta de referência cruzada, mas sim consulta de seleccionar. Já não me lembro se o group by dá neste tipo de consulta. Se calhar nem dá para fazer aquilo que quero.
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
25-07-2012, 16:51
Mensagem: #18
RE: Access 2007
(25-07-2012 16:47)Dnaboy Escreveu:  O código é um pouco mais complicado que isso, tem mais campos associados para além desses, se calhar o problema pode ser pelo SELECT FROM estar mal construído.

Big Grin...
Tu é que pediste ajuda.

Progster
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
25-07-2012, 16:53 (Esta mensagem foi modificada pela última vez a: 25-07-2012 16:54 por Dnaboy.)
Mensagem: #19
RE: Access 2007
Citar:SELECT DISTINCTROW Cadeira.Codigo_da_Cadeira, Cadeira.Designacao_da_disciplina, [Local de Realizacao].[Local de realizacao], [Localidade de realização das Cadeiras].nome_local, Cadeira.Data_de_Inicio, Cadeira.Data_de_Fim, Aluno.nome, [Escola].nome, Categoria.descricao, Cadeira_aluno.Aluno, Cadeira_aluno.Cadeira, Cadeira_aluno.situacao_inscricao, Pagamento.situacao, [Natureza Vinculativa].tipo, Cadeira.Duracao_da_Cadeira, [Cadeira-Professor].professor, Professor.Nome
FROM Pagamento INNER JOIN ([Natureza Vinculativa] INNER JOIN ([Localidade de realização das Cadeiras] INNER JOIN ([Local de Realizacao] INNER JOIN (Aluno INNER JOIN (Professor INNER JOIN ([Escola] INNER JOIN ((Cadeira INNER JOIN (Categoria INNER JOIN Cadeira_aluno ON Categoria.ID_categoria = Cadeira_aluno.categoria) ON Cadeira.ID_Cadeira = Cadeira_aluno.Cadeira) INNER JOIN [Cadeira-Professor] ON Cadeira.ID_Cadeira = [Cadeira-Professor].Cadeira) ON [Escola].ID_Dep = Cadeira_aluno.Entidade_Departamento) ON Professor.codigo = [Cadeira-Professor].professor) ON Aluno.codigo = Cadeira_aluno.Aluno) ON [Local de Realizacao].ID_local = Cadeira.Local_de_realizacao) ON [Localidade de realização das Cadeiras].ID_localidade_de_realiz = Cadeira.localidade) ON [Natureza Vinculativa].ID_naturezavinculativa = Cadeira_aluno.vinculo) ON Pagamento.ID_pagamento = Cadeira_aluno.situacao_pagamento
WHERE (((Cadeira.Codigo_da_Cadeira)=[Formulários]![Inscricao-Cadeira]![Codigo_da_Cadeira]) AND ((Cadeira_aluno.situacao_inscricao)=3));

Eu disse que era meio confuso em sql Big Grin
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
25-07-2012, 17:22 (Esta mensagem foi modificada pela última vez a: 25-07-2012 17:23 por progster.)
Mensagem: #20
RE: Access 2007
Ok. A consulta está um pouco confusa, ajudava ter a BD para fazer testes, ou então o modelo entidade relação.

Se assim como está te retorna a informação que queres, desde que tenha só um professor associado à cadeira, então experimenta adicionar algo deste género

Código:
GROUP By Professor.ID,Professor.Nome;

EDIT: A seguir ao WHERE.

EDIT1:Recomendo que faças uma cópia desse código para um .doc à parte, pois vale mais prevenir do que remediar.

Progster
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
Colocar Resposta 


Saltar Fórum:


Utilizadores a ver este tópico: 1 Visitante(s)