2014-12-02 105 views
0

我想在NVD3中为堆叠条形图制作JSON数据,它需要一个键为0,如果它不存在正常运作。SQL从第二个表中选择数据,如果它不存在于第一个表中

我用下面的SQL查询来获取数据TABLE1

select POSITION, DOE, ID, COUNT(ID) AS COUNTER FROM TABLE1 WHERE 
    DOE BETWEEN '2014-12-02 00:00:01' AND '2014-12-02 23:59:59' AND TYPE = 'P' AND 
    POSITION LIKE 'POS%' 

TABLE1

POSITION  DOE   ID COUNTER 
POS1  02/12/2014 07:02 12 49 
POS2  02/12/2014 07:17 104 17 
POS3  02/12/2014 07:07 34 34 
POS4  02/12/2014 07:07 21 54 
POS5  02/12/2014 07:09 10 51 
POS6  02/12/2014 08:42 3 24 
POS7  02/12/2014 07:07 10 51 
POS8  02/12/2014 07:01 41 46 
POS9  02/12/2014 07:08 24 40 

我创建了一个名为TABLE2另一个表中的列位置和COUNT和做出的计数0.

这里是的内容TABLE2

POSITION COUNTER 
    POS1 0 
    POS2 0 
    POS3 0 
    POS4 0 
    POS5 0 
    POS6 0 
    POS7 0 
    POS8 0 
    POS9 0 

我需要做的是如果位置POS1不存在TABLE1中,然后显示位置POS1和TABLE2中的计数器0。

所以因此我会得到一张类似的表格 -

POSITION  DOE   ID COUNTER 
POS1       0 
POS2  02/12/2014 07:17 104 17 
POS3  02/12/2014 07:07 34 34 
POS4  02/12/2014 07:07 21 54 
POS5  02/12/2014 07:09 10 51 
POS6  02/12/2014 08:42 3 24 
POS7  02/12/2014 07:07 10 51 
POS8  02/12/2014 07:01 41 46 
POS9  02/12/2014 07:08 24 40 

我全新到SQL,因此,如果这是可能的,我已搜查我甚至不知道,搜查,并不能找到一个办法。

任何意见将不胜感激。

回答

1

我想你想left outer join

select coalesce(t1.position, t2.position) as position, 
     t1.DOE, t1.ID, coalesce(t1.COUNTER, t2.COUNTER) as COUNTER 
from table2 t2 left join 
    (select POSITION, DOE, ID, COUNT(ID) AS COUNTER 
     FROM TABLE1 
     WHERE DOE BETWEEN '2014-12-02 00:00:01' AND '2014-12-02 23:59:59' AND TYPE = 'P' AND 
      POSITION LIKE 'POS%' 
    ) t1 
    on t2.position = t1.position; 
+0

那是绝对精彩,感谢的人! – SK2017 2014-12-02 13:02:05

相关问题