MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

2 participantes

    Tabela com mais de um campo relacionados à uma outra mesma tabela

    avatar
    manubittencourt
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 2
    Registrado : 26/09/2014

    Tabela com mais de um campo relacionados à uma outra mesma tabela Empty Tabela com mais de um campo relacionados à uma outra mesma tabela

    Mensagem  manubittencourt 27/9/2014, 04:54

    Boa noite.
    Estou com uma dificuldade de relacionamento no Access.
    Eu tenho uma tabela ENTREVISTADO com campos codEntrevistado, nome, sexo, nomeConjuge, sexoConjuge, transporte (há outros campos mas estou citando aqui só os que interessam).
    Tenho uma outra tabela SEXO com os campos CodSexo, NomeSexo;
    E Também uma TRANSPORTE com CodTransporte, Tipo.

    Ao fazer o relacionamento entre as tabelas relaciono o campo Entrevistado.sexo->Sexo.id; Quando eu faço o mesmo para o campo sexoConjuge o Access cria o desenho de uma outra tabela Sexo, de forma que fica: Sexo_1.
    Até aí não tem problema, fiz o formulário e os dados estão sendo inseridos normalmente.

    Só que quando tento fazer uma consulta de, por exemplo, quantos entrevistados no sexo feminino possuem carro no modo Design da consulta, não obtenho resultado.
    Percebi que, talvez por causa de como essas relações foram feitas, o SQL da consulta faz um INNER JOIN automático para cada campo relacionado às tabelas SEXO e TRANSPORTE.

    por exemplo:

    SELECT Count(Entrevistado.CodEntrevistado) AS ContarDeCodEntrevistado, Sexo.NomeSexo, Transporte.Tipo
    FROM Transporte INNER JOIN (Sexo INNER JOIN Entrevistado ON (Sexo.CodSexo = Entrevistado.SexoConj) AND (Sexo.CodSexo = Entrevistado.Sexo)) ON (Transporte.CodTransporte = Entrevistado.Transporte) AND (Transporte.CodTransporte = Entrevistado.TransporteEscola)
    GROUP BY Sexo.NomeSexo, Transporte.Tipo
    HAVING (((Sexo.NomeSexo)="feminino") AND ((Transporte.Tipo)="carro"));
    este é o código automático que o Design gera. Percebam que tem um "INNER JOIN Entrevistado ON (Sexo.CodSexo = Entrevistado.SexoConj)" sendo que neste momento eu não quero usar sexo do cônjuge na minha pesquisa. O mesmo acontece para Transporte, pois tenho 2 campos em Entrevistado ligados à tabela Transporte)

    Então, quando eu retiro esses INNER JOIN excedentes, fica assim:
    SELECT Count(Entrevistado.CodEntrevistado) AS QTD, Sexo.NomeSexo, Transporte.Tipo
    FROM Transporte INNER JOIN (Sexo INNER JOIN Entrevistado ON (Sexo.CodSexo = Entrevistado.Sexo)) ON (Transporte.CodTransporte = Entrevistado.Transporte)
    GROUP BY Sexo.NomeSexo, Transporte.Tipo
    HAVING (((Sexo.NomeSexo)="Feminino") AND ((Transporte.Tipo)="carro"));
    E desse jeito funciona.

    A questão é:
    Estou fazendo relacionamento errado? Existe um jeito mais prático de eu fazer essa consulta pelo Design sem precisar ir alterar o código manualmente?
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8251
    Registrado : 05/11/2009

    Tabela com mais de um campo relacionados à uma outra mesma tabela Empty Re: Tabela com mais de um campo relacionados à uma outra mesma tabela

    Mensagem  Alexandre Neves 27/9/2014, 09:55

    Bom dia, e bem-vinda ao fórum
    Tente trabalhar em código. Dá mais algum trabalho no início, mas ajuda em todos os aspectos.
    SELECT Count(CodEntrevistado) AS ContarDeCodEntrevistado, NomeSexo, Tipo FROM (Entrevistado LEFT JOIN Sexo ON Entrevistado.Sexo=Sexo.CodSexo) LEFT JOIN Transporte ON Transporte.CodTransporte = Entrevistado.Transporte WHERE NomeSexo='feminino' AND Tipo='carro' GROUP BY NomeSexo, Tipo


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    manubittencourt
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 2
    Registrado : 26/09/2014

    Tabela com mais de um campo relacionados à uma outra mesma tabela Empty Re: Tabela com mais de um campo relacionados à uma outra mesma tabela

    Mensagem  manubittencourt 29/9/2014, 15:42

    É a primeira vez que estou usando o Access e por isso fiquei na dúvida se eu que estava fazendo algo errado. Queria fazer com que o modo Design fosse mais acessível à pessoa que vai utilizar o programa, assim, com um pouco de instrução, ela mesma poderia criar as Queries que precisasse. Mas já que o jeito mesmo, nesse caso, é mexendo no código, verei uma outra forma de ajudá-la.

    Muito obrigada pelo retorno!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8251
    Registrado : 05/11/2009

    Tabela com mais de um campo relacionados à uma outra mesma tabela Empty Re: Tabela com mais de um campo relacionados à uma outra mesma tabela

    Mensagem  Alexandre Neves 29/9/2014, 19:08

    Boa tarde,
    Resolveu? se sim, marque "Resolvido"


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

      Data/hora atual: 3/12/2022, 01:46