2017-03-08 9 views
3

私は2つのテーブルを持っています。 (LOG)最初はtimestamp及び任意の他の列、IDでログファイルを表す:日付範囲に応じたJOIN列

id   timestamp 
    1 2016-01-11 15:14:33 
    2 2016-01-12 15:14:33 
    3 2016-01-13 15:14:33 
    4 2016-01-14 15:14:33 
    5 2016-01-15 15:14:33 
    6 2016-01-16 15:14:33 
    7 2016-01-17 15:14:33 
    8 2016-01-18 15:14:33 
    9 2016-01-19 15:14:33 
    10 2016-01-20 15:14:33 

第二テーブル(STATUS)は、このステータスに「アクティブされた状態とそれぞれの日付を格納します「1:

 date status 
2016-01-02  A 
2016-01-13  B 
2016-01-18  C 

ステータスA2016-01-02で開始し、その上2016-01-13とまでアクティブでした。

私はこのように見ているテーブルを達成するために、テーブルにこれらに参加したい:

id   timestamp status 
    1 2016-01-11 15:14:33  A 
    2 2016-01-12 15:14:33  A 
    3 2016-01-13 15:14:33  B 
    4 2016-01-14 15:14:33  B 
    5 2016-01-15 15:14:33  B 
    6 2016-01-16 15:14:33  B 
    7 2016-01-17 15:14:33  B 
    8 2016-01-18 15:14:33  C 
    9 2016-01-19 15:14:33  C 
    10 2016-01-20 15:14:33  C 

どのように私は、この使用してMySQLを達成することができますか?

+0

ための最初の列は何ですか? – Strawberry

+0

@Strawberryテーブルの中に実際には存在しない行番号です。 – ottlngr

+0

それを取り除きます。それは助けにはならない。 – Strawberry

答えて

1

あなたがそうのような最新のstatus取得するには、サブクエリを使用することができます。

select t.* , (
    select s.`status` 
    from s 
    where s.`date` < t.`timestamp` 
    order by s.`date` desc 
    limit 1 
    ) as `status` 
from t; 

rextesterデモを:http://rextester.com/KAGOV11673

+0

私の質問+デモに答えました - 優秀! – ottlngr

+0

@ottlngrお手伝いします! – SqlZim