2014-03-12 116 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