2014-03-12 196 views
0

我有一個表列日期,系統,硬度,電導率,tankno。mysql多表連接表

 
date  system cond hard tankno 

2014-01-04 HT 55.67 2.68 1 
2014-01-05 HT 64.67 3.1  2 
2014-01-10 HT 54.77 2.44 1 
2014-01-10 HT 66.3 3.47 2 
2014-01-18 HT 55.63 2.38 1 
2014-01-18 HT 65.9 1.44 2 
2014-01-24 HT 53.1 1.76 2 
2014-01-28 HT 64.53 2.1  1 

我想這樣

 

Date   system Tank 1 cond Tank1 Hard  Tank 2 cond Tank 2hard 

2014-01-04 HT   55.67  2.68   NULL  NULL 
2014-01-05 HT   NULL  NULL   64.67  3.1 
2014-01-10 HT   54.77  2.44   66.3  3.47 
2014-01-18 HT   55.63  2.38   65.9  1.44 
2014-01-24 HT   NULL  NULL   53.1  1.76 
2014-01-28 HT   64.53  2.1    NULL  NULL 

報告我使用這個SQL語句:

select t1.date, t1.cond as tk1cond, t1.hard as tk1hard, 
     t2.cond as tk2cond, t2.hard as tk2hard 
from systemvalue t1 left join systemavalue t2 
    on t1.date=t2.date 
    and t2.tankno='2' 
    and t2.system='HT' 
    and month(t2.date)='01' 
    and year(t2.date)='2014' 
where t1.tankno='1' and t1.system='HT' 
     and month(t1.date)='01' 
     and year(t1.date)='2014' 

但有關地方tankno 1個值可用這樣的日期,這個返回數據:

 

Date   system Tank 1 cond Tank1 Hard  Tank 2 cond Tank 2hard 

2014-01-04 HT   55.67  2.68    NULL  NULL 
2014-01-10 HT   54.77  2.44    66.3  3.47 
2014-01-18 HT   55.63  2.38    65.9  1.44 
2014-01-28 HT   64.53  2.1    NULL  NULL

如何修改SQL,以便獲取數據所有日期

我想從日期列的所有日期,並將其加入到所有坦克1個vlaues和罐2個值

回答

0

給你:

select 
    dt.date, 
    t1.cond as tk1cond, 
    t1.hard as tk1hard, 
    t2.cond as tk2cond, 
    t2.hard as tk2hard 
from (select date from systemvalue group by date) dt 
left join systemvalue t1 on t1.date = dt.date and t1.tankno = '1' and t1.system = 'HT' 
left join systemvalue t2 on t2.date = dt.date and t2.tankno = '2' and t2.system = 'HT' 
+0

非常感謝。自昨天上午以來,我一直在燒我的手指 – mansoondreamz