按日期MySQL连接两个表

时间:2016-04-10 19:58:46

标签: mysql sql

我有这个:

HISTORY
the_date     amount
2014-02-27   200
2015-02-26   2000

VALUE
the_date    interest
2010-02-10  2
2015-01-01  3

有可能以某种方式提出这样的问题,例如,history.the_date大于或等于value的最大可能值.the_date?

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

void main () {
    string line;
    ifstream myfile ("example.txt"); //change this to your file's name
    if (myfile.is_open())
    {
        while ( getline (myfile,line) )
        {
            cout << line << '\n';
        }
        myfile.close();
    }

    else 
        cout << "Unable to open file"; 
}

我需要将正确的兴趣与金额配对!

3 个答案:

答案 0 :(得分:0)

ON之后使用连接条件不在where子句...

SELECT * FROM history JOIN (select max(value.the_date) as d from value) as x on history.the_date >= x.d
WHERE 1=1

答案 1 :(得分:0)

据推测,你想要这个:

select h.*
from history h
where h.the_date >= (select max(v.the_date) from value v);

答案 2 :(得分:0)

所以value.the_date是利息有效的日期。利息2在2010-02-10至2014-12-31期间有效,因为自2015-01-01以来新利息3适用。

要获得当前对日期的兴趣,您可以使用子查询,在该子查询中选择具有有效起始日期的所有利息记录,并且只保留最新的:

select
  the_date,
  amount,
  (
    select v.interest
    from value v
    where v.the_date <= h.the_date
    order by v.the_date desc
    limit 1
  ) as interest
from history h;