2017-08-26 1 views
0

Je voulais obtenir la dernière entrée (added_on) de la table où client_id et financial_year sont identiques, mais je n'ai pas l'ID client ou même l'année financière pour comparer j'ai besoin de comparer eux dans la table lui-même.obtenir la dernière entrée ajoutée à partir de la table mysql

enter image description here

i utilisé requête suivante:

SELECT * 
    FROM file_mgmt fm 
    , client c 
    , cupboard cb 
    where fm.client_id = c.client_id 
    AND fm.cupboard_id = cb.cupboard_id 
    AND fm.status = 'Active' 
GROUP 
    BY fm.client_id 
    , fm.financial_year 

et je suis arrivé cette sortie, ce qui est unique contre chaque client_id et financial_year mais son pas la dernière entrée

enter image description here

S'il vous plaît aider à obtenir la dernière entrée.

+0

vous pouvez utiliser mot-clé LIMIT –

+0

Merci de votre réponse, mais les gars en ajoutant 1 limite la sortie de requête ensemble est limitée par se un, et aussi je ne reçois pas la sortie désirée .... – swap

Répondre

1

Espérons que cela aidera

SELECT * FROM file_mgmt fm, client c, cupboard cb where fm.`client_id` = c.`client_id` AND fm.`cupboard_id` = cb.`cupboard_id` AND fm.status = 'Active' 
    GROUP BY fm.`client_id`, fm.`financial_year` 
    ORDER BY id DESC 
    LIMIT 1 
+0

même sortie comme je l'ai eu, aucune dernière entrée – swap

+1

Qui upvotes ce genre de choses – Strawberry

+0

@pattatharasunataraj désolé, quel est votre point? – Strawberry

0

Comme vous utilisez groupe par vous devez utiliser requête interne d'abord, vous pouvez alors l'utiliser

SELECT fm.*,c.*,cb.* FROM file_mgmt fm, client c, cupboard cb 
JOIN (SELECT file_mgmt_id,client_id, financial_year,max(added_on) 
FROM file_mgmt GROUP BY client_id,financial_year) as fm1 
ON fm.file_mgmt_id = fm1.file_mgmt_id 
where fm.`client_id` = c.`client_id` AND 
fm.`cupboard_id` = cb.`cupboard_id` AND fm.status = 'Active' 

EDIT

essayer cette simple requête à la place

SELECT fm.*,max(added_on) FROM file_mgmt fm, 
    client c , cupboard cb 
    where fm.client_id = c.client_id 
    AND fm.cupboard_id = cb.cupboard_id 
    AND fm.status = 'Active' 
    group by client_id,financial_year ; 
+0

Colonne inconnue 'fm.client_id' dans 'sur la clause' – swap

+0

Afficher votre requête. Ma suggestion ne fournira pas cette erreur car elle a déjà la table fm qui a client_id –

0

Essayez d'ajouter

ORDER BY added_on DESC 
LIMIT 1 

à la fin de votre requête.

0
SELECT * 
    FROM file_mgmt fm 
    , client c 
    , cupboard cb 
    where fm.client_id = c.client_id 
    AND fm.cupboard_id = cb.cupboard_id 
    AND fm.status = 'Active' 
GROUP 
    BY fm.client_id 
    , fm.financial_year 
ORDER BY added_on DESC 
LIMIT 1