Mysql
 sql >> Base de données >  >> RDS >> Mysql

mysql - entrée la plus récente pour chaque identifiant

Eh bien, j'ai finalement trouvé la solution. Ajoutez simplement ce code à la fin de la requête SQL :

AND PP.PROFISSIONAL_PORCENTAGEM_Pk = (
SELECT t2.PROFISSIONAL_PORCENTAGEM_Pk FROM profissional_porcentagem as t2
    where t2.PROFISSIONAL_PORCENTAGEM_FK_CLINICA = PP.PROFISSIONAL_PORCENTAGEM_FK_CLINICA 
    order by t2.PROFISSIONAL_PORCENTAGEM_Pk desc limit 1
)

Et puis nous aurons la requête entière comme ceci :

SELECT
PP.PROFISSIONAL_PORCENTAGEM_Pk,
UST.USER_NAME, 
ADDR.ADDRESS_NOME, 
ADDR.ADDRESS_ATIVO,
PA.PROFESSIONAL_ADDRSS_PK, 
PP.PROFISSIONAL_PORCENTAGEM_PORCENT,
PP.PROFISSIONAL_PORCENTAGEM_FK_CLINICA,
PP.PROFISSIONAL_PORCENTAGEM_DATA

FROM 
profissional_porcentagem AS PP
RIGHT JOIN professional_addrss AS PA
    ON(PP.PROFISSIONAL_PORCENTAGEM_FK_CLINICA=PA.PROFESSIONAL_ADDRSS_PK)

INNER JOIN address ADDR
    ON(PA.PROFESSIONAL_ADDRSS_FKADDRSS=ADDR.ADDRESS_Pk)

INNER JOIN professional PF
    ON(PA.PROFESSIONAL_ADDRSS_FKPROFESSIONAL=PF.PROFESSIONAL_Pk)

INNER JOIN usert AS UST
    ON(PF.PROFESSIONAL_FKUSER=UST.USER_Pk)

WHERE UST.USER_Pk=3
AND ADDR.ADDRESS_ATIVO=1

AND PP.PROFISSIONAL_PORCENTAGEM_Pk = (
SELECT t2.PROFISSIONAL_PORCENTAGEM_Pk FROM profissional_porcentagem as t2
    where t2.PROFISSIONAL_PORCENTAGEM_FK_CLINICA =   PP.PROFISSIONAL_PORCENTAGEM_FK_CLINICA 
    order by t2.PROFISSIONAL_PORCENTAGEM_Pk desc limit 1
);

Remarque :J'ai été inspiré par ce message Sélectionner ligne avec la date la plus récente par utilisateur