2014-04-10 157 views
0

我有這樣的代碼,我得到「值」從一個表四月獲取價值

月份
SELECT FROM_UNIXTIME(t_stamp/1000, '%Y-%m-%d %l:%i %p') as t_stamp, 
    ROUND(AVG(CASE WHEN id = '1' THEN value END),2) Col1, 
    ROUND(AVG(CASE WHEN id = '2' THEN value END),2) Col2 
FROM tableforapril 
WHERE 
    id IN ('1','2') 
    and DATE(from_unixtime(t_stamp/1000)) 
     BETWEEN '2014-04-01' and '2014-04-01' 
    and value is not null 
GROUP BY 
    DATE(from_unixtime(t_stamp/1000)), 
    HOUR(from_unixtime(t_stamp/1000)) 

但我的問題是,我有一個以上的表,我有另一個表爲行軍 其中我還需要從該表中獲取'值'列。

如果我這樣做時間戳,如:

and DATE(from_unixtime(t_stamp/1000)) 
     BETWEEN '2014-03-31 and '2014-04-01' 

我需要從行軍表和表四月獲得「價值」欄。 對輸出會是這個樣子:

t_stamp   | Col1 | Col2 
2014-04-01 3:00 AM | 1.23 | 2.33 
2014-04-01 5:00 AM | 4.55 | 5.13 
2014-03-31 1:00 PM | 12.33 | 2.00 
2014-03-31 2:00 PM | 5.12 | 3.99 

col1和col2的列都從三月和四月表。我正在使用的表格是按月分隔的,兩個表格的值均爲t_stamp。不幸的是, 我不能編輯我正在使用的表格,因爲我不允許。

在我的項目中,用戶將選擇基於下拉列表

+0

@hear ...在你的示例輸出,在col1從三月表四月表和col2上? t_stamp的值來自哪裏? – MikeTWebb

+0

@MikeTWebb我更新了描述 – hearmeroar

回答

0

在t_stamp既然你有兩個獨立的表也沒有辦法,除非你加入他們的查詢都因爲你已經沒有提供相關的數據點,你唯一的選擇是聯盟。喜歡的東西:

SELECT * FROM tableforapril 
WHERE.... 
UNION ALL 
SELECT * FROM tableformarch 
WHERE ... 

另一種解決方案可能只是從兩個表返回的內容:

SELECT a.col1, a.col2, b.col1, b.col2 FROM tableforapril a, tableformarch b