2014-12-02 31 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

相關問題