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


3 participantes

    (SQL) Tabela 1 - Tabela 2 (um para muitos) - maior data da tabela 2 para cada item da tabela 1

    avatar
    andrecc
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 10/08/2012

    (SQL) Tabela 1 - Tabela 2 (um para muitos) - maior data da tabela 2 para cada item da tabela 1 Empty (SQL) Tabela 1 - Tabela 2 (um para muitos) - maior data da tabela 2 para cada item da tabela 1

    Mensagem  andrecc Ter 28 Abr 2015, 00:28

    Prezados:

    Por gentileza, se alguém puder contribuir. Tabelas hipotéticas, na realidade não é um banco de dados de clínica médica:

    Supondo que eu tenha as tabelas abaixo:

    Tabela1 --> id_paciente | nome_paciente | cpf_paciente
    Tabela2 --> id_consulta | data_consulta  | especialidade_consulta | id_paciente

    PERGUNTA: qual a instrução sql retornaria todos os pacientes, com a data e a especialidade da consulta mais recente de cada um, conforme modelo abaixo:

    Consulta1 --> id_paciente | nome_paciente | cpf_paciente | data_ultima_consulta | especialidade_ultima_consulta

    ?
    avatar
    andrecc
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 10/08/2012

    (SQL) Tabela 1 - Tabela 2 (um para muitos) - maior data da tabela 2 para cada item da tabela 1 Empty Re: (SQL) Tabela 1 - Tabela 2 (um para muitos) - maior data da tabela 2 para cada item da tabela 1

    Mensagem  andrecc Ter 28 Abr 2015, 05:35

    Ao pensar na solução para o problema exposto por um membro do fórum em outro tópico, achei uma solução ao menos paliativa para o problema relatado aqui. Se alguém tiver alguma ideia menos "gambiarrenta", por gentileza, informar...

    http://maximoaccess.forumeiros.com/t22714-consulta-mostrar-local-atual-pela-ultima-data
    cleverson_manaus
    cleverson_manaus
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1012
    Registrado : 23/09/2011

    (SQL) Tabela 1 - Tabela 2 (um para muitos) - maior data da tabela 2 para cada item da tabela 1 Empty Re: (SQL) Tabela 1 - Tabela 2 (um para muitos) - maior data da tabela 2 para cada item da tabela 1

    Mensagem  cleverson_manaus Ter 28 Abr 2015, 11:03

    Vc deveria ter mais uma tabela, a de "especialidade".

    Em seguida, acrescentaria esse id na tabela 02.

    A
    consulta desejada será a própria tabela 02, em ordem decrescente por data.


    .................................................................................
    afro

    "É fazendo que se aprende a fazer aquilo que se deve aprender a fazer."(Aristóteles)
    - Dúvida resolvida!!! Marcar o tópico como resolvido!!!
    avatar
    andrecc
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 10/08/2012

    (SQL) Tabela 1 - Tabela 2 (um para muitos) - maior data da tabela 2 para cada item da tabela 1 Empty Re: (SQL) Tabela 1 - Tabela 2 (um para muitos) - maior data da tabela 2 para cada item da tabela 1

    Mensagem  andrecc Ter 28 Abr 2015, 11:32

    Cleverson,

    Agradeço a resposta, mas não entendi como se aplicaria ao meu problema. Preciso que gere uma lista de todos os pacientes, uma linha para cada paciente, com a data e a especialidade da consulta médica mais recente.

    Na realidade, não seria só a data e a especialidade. Seriam todos os campos da consulta médica mais recente...
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    (SQL) Tabela 1 - Tabela 2 (um para muitos) - maior data da tabela 2 para cada item da tabela 1 Empty Re: (SQL) Tabela 1 - Tabela 2 (um para muitos) - maior data da tabela 2 para cada item da tabela 1

    Mensagem  Cláudio Más Ter 28 Abr 2015, 11:53

    Vê se é isso:

    Código:
    SELECT Tabela1.id_paciente, Tabela1.nome_paciente, Tabela1.cpf_paciente, t2.data_consulta, t2.especialidade_consulta
    FROM Tabela1 INNER JOIN (SELECT t2.id_paciente, Tabela2.especialidade_consulta, Tabela2.data_consulta
    FROM Tabela2 INNER JOIN (SELECT Tabela2.id_paciente, Max(Tabela2.data_consulta) AS última FROM Tabela2 GROUP BY Tabela2.id_paciente)  AS t2 ON (Tabela2.data_consulta = t2.última) AND (Tabela2.id_paciente = t2.id_paciente))  AS t2 ON Tabela1.id_paciente = t2.id_paciente

    Vi agora que é bem parecido com a solução do outro tópico.
    Não vejo nada de gambiarra nisso.


    Última edição por Cláudio Más em Ter 28 Abr 2015, 12:20, editado 1 vez(es) (Motivo da edição : gambiarra??)
    avatar
    andrecc
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 10/08/2012

    (SQL) Tabela 1 - Tabela 2 (um para muitos) - maior data da tabela 2 para cada item da tabela 1 Empty Re: (SQL) Tabela 1 - Tabela 2 (um para muitos) - maior data da tabela 2 para cada item da tabela 1

    Mensagem  andrecc Ter 28 Abr 2015, 16:08

    Claudio:

    Confesso que estou tendo um pouco de dificuldade (bastante, na realidade) para compreender a sua instrução sql, pois não sou muito experiente e ela é razoavelmente complexa para um iniciante. E não cheguei a testá-la, pois sequer tenho o BD teste: como referi acima, são tabelas hipotéticas e simplificadas, para que eu pudesse entender mais facilmente e depois aplicar ao meu banco.

    Entretanto, verifiquei de cara que você não teve que utilizar a "gambiarra" que usei, de concatenar dois campos, embora eu não tenha entendido de forma exata o seu procedimento.
    avatar
    andrecc
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 10/08/2012

    (SQL) Tabela 1 - Tabela 2 (um para muitos) - maior data da tabela 2 para cada item da tabela 1 Empty Re: (SQL) Tabela 1 - Tabela 2 (um para muitos) - maior data da tabela 2 para cada item da tabela 1

    Mensagem  andrecc Qua 29 Abr 2015, 03:14

    Agora entendi seu código...

    Para não ter que concatenar, que era uma invencionice minha, basta usar o "And" dentro do ON.

    Conteúdo patrocinado


    (SQL) Tabela 1 - Tabela 2 (um para muitos) - maior data da tabela 2 para cada item da tabela 1 Empty Re: (SQL) Tabela 1 - Tabela 2 (um para muitos) - maior data da tabela 2 para cada item da tabela 1

    Mensagem  Conteúdo patrocinado


      Data/hora atual: Ter 07 maio 2024, 05:09