2012-01-06 6 views
2

У меня есть ряд записей, в которых поиск должен давать только уникальный результат на основе полей «действительный от» и «компании».mysql запрос на основе даты

Вот пример 4 записей:

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 

на основе текущей даты, мне нужно, чтобы показать только один из результатов «в компании». Например, если сегодня есть 26/11/11, запрос будет показывать записи 3 и 4 (запись 4 для компании Banco Central, имеющая более позднюю дату «с даты», заменяет предыдущие записи (1 и 2). Банк, являющийся единственным, будет показывать также.

Если сегодня было 15/11/11, тогда он должен показать первую запись (так как действительная от значения записи 2,3 и 4 в будущем)

Если бы сегодня был 20/11/11, то он будет показывать запись 2 и 3

если кто может показать мне, что SQL-запрос должен выглядеть будет оценено

+0

Это вопрос coomonly. Нажмите на тег [наибольшая-n-на-группу] (http://stackoverflow.com/questions/tagged/greatest-n-per-group+mysql) или по ссылкам справа, в разделе ** Related * * заголовок. –

ответ

1

Вы можете вступить в подзаголовок:

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 
Смежные вопросы