Groupe MYSQL par dernière valeur mais sous condition
P粉037450467
P粉037450467 2023-09-14 15:37:56
0
1
435

Je vais vous expliquer ma situation. MySQL 5.7

J'ai 2 tables : Registre et Mobile. Ces deux tables ont IDMovement en commun donc je peux les rejoindre

Ma question : Je dois regrouper par colonne Registry (qui est une colonne varchar) et je dois vérifier MAX IDMovement. Dans cette ligne, il y a une autre colonne appelée IDCausal. Ignorer si MAX IDMovement sur IDCasual est différent de 21. Sinon, retournez la ligne.

Je vais donner un exemple de ce que j'ai fait :

SELECT
    m.IDMovement,
    mo.IDCausal,
    m.Registry 
FROM
    registry m
    JOIN movement mo ON m.IDMovement = mo.IDMovement 
WHERE
    m.Registry = "2SST0160"

P.S. WHERE n'est qu'un exemple, je dois interroger chaque registre.

La valeur de retour du registre 2SST0160 est :

IDMovement   IDCausal  Registry
5550         21        2SST0160
9817         5         2SST0160

Dans l'exemple, le MAX IDMovement est 9817, mais le IDCausal est 5, donc le résultat attendu de la requête dans cet exemple n'est RIEN. Si IDCausal vaut 21, le résultat attendu est uniquement des lignes de 21. Pour chaque registre, je m'attends à ce que le résultat soit 0 ou 1 ligne par registre.

J'espère avoir été clair, merci pour votre aide !

P粉037450467
P粉037450467

répondre à tous(1)
P粉165522886
WITH newtable AS ( SELECT
    m.IDMovement,
    mo.IDCausal,
    m.Registry
FROM
    registry m
    JOIN movement mo ON m.IDMovement = mo.IDMovement
WHERE
    m.Registry = '2SST0160' )
SELECT * FROM newtable
    WHERE (SELECT IDCausal FROM newtable ORDER BY IDMovement DESC LIMIT 1) = 21
    ORDER BY IDMovement DESC LIMIT 1;
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal