MySQL запрос на основе даты - PullRequest
2 голосов
/ 07 января 2012

У меня есть ряд записей, в которых поиск должен давать только уникальный результат, основанный на полях 'valid from' и 'company'.

Вот пример из 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-запрос, мы будем очень благодарны

1 Ответ

1 голос
/ 07 января 2012

Вы можете присоединиться к подзапросу:

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
...