2012-01-06 7 views
2

J'ai un certain nombre d'enregistrements où une recherche ne doit donner qu'un résultat unique basé sur les champs 'valide de' et 'entreprise'.requête mysql basée sur la date

Voici un exemple de 4 enregistrements:

RECORD NO. COMPANY  VALID_FROM VALID_TO VALUE 
1   BANCO CENTRAL 10/11/11 31/12/11 123.45 
2   BANCO CENTRAL 20/11/11 31/12/11 120.34 
3   EXTERIOR BANK 20/11/11 31/12/11 115.45 
4   BANCO CENTRAL 25/11/11 31/12/11 115.45 

Basé sur la date actuelle, je dois montrer que l'un des résultats par « entreprise ». Par exemple, si aujourd'hui est le 26/11/11, la requête affichera les enregistrements 3 et 4 (enregistrement 4 pour la société Banco Central, dont la date de fin de validité est ultérieure remplace les enregistrements précédents (1 et 2).

Si aujourd'hui était 15/11/11, alors il devrait montrer le premier enregistrement (puisque la valeur valide de l'enregistrement 2,3 et 4 est dans le futur)

Si aujourd'hui était 20/11/11, il montrera fiche 2 et 3

si quelqu'un peut me montrer ce que la requête SQL devrait ressembler sera beaucoup apprécié

+0

Ceci est une question fréquemment posée. Cliquez sur le tag [best-n-per-group] (http://stackoverflow.com/questions/tagged/greatest-n-per-group+mysql) ou sur les liens à droite, sous la rubrique ** Related * * entête. –

Répondre

1

Vous pouvez joindre à une sous-requête:

select 
    * 
from 
    banks b1 
    inner join (select company, max(fromdate) as maxdate from banks where fromdate <= now()) b2 on 
     b1.company = b2.company 
     and b1.fromdate = b2.maxdate 
Questions connexes