2015-05-29 59 views
1

得到時間戳之間的數值計數考慮見下表SQL查詢:無法從多個表

表1:

id instance ttime    val 

1 -1  29-5-2915 08:17:29  2000 
2 -1  29-5-2915 09:17:29  2938 
3 -1  29-5-2915 10:17:29  2837 
4 inst1 29-5-2915 11:17:29  1233 
5 inst2 29-5-2915 12:17:29  2837 

表2:

id instance ttime    val 

1 -1  29-5-2915 13:17:29  10 
2 -1  29-5-2915 14:17:29  29 
3 -1  29-5-2915 15:17:29  283 
4 inst1 29-5-2915 16:17:29  123 
5 inst2 29-5-2915 17:17:29  28 

我想29-5-2915 08:17:29和29-5-2915 17:17:29之間的ID總數。

如何編寫連接查詢以獲得預期的輸出?

+0

你嘗試過什麼嗎? – sakura

+0

我不明白。你想計算ID。那麼在這種情況下的計數是10還是4呢? – Arion

+0

是的,Arion,我的結果應該是這樣的,id = 10。(從特定時間段計數總的id,在給定的例子中,開始時間是29-5-2915 08:17:29,結束時間是29-5-2915 17:17:29) – Tester

回答

1

也許這樣的事情:

SELECT count(*) 
(
    SELECT id FROM Table1 
    WHERE ttime BETWEEN '29-5-2915 08:17:29' AND '29-5-2915 17:17:29' 
    UNION ALL 
    SELECT id FROM Table2 
    WHERE ttime BETWEEN '29-5-2915 08:17:29' AND '29-5-2915 17:17:29' 
) AS t 

或者,如果你想有一個重複計數:從表1

SELECT count(*) 
(
    SELECT id FROM Table1 
    WHERE ttime BETWEEN '29-5-2915 08:17:29' AND '29-5-2915 17:17:29' 
    UNION 
    SELECT id FROM Table2 
    WHERE ttime BETWEEN '29-5-2915 08:17:29' AND '29-5-2915 17:17:29' 
) AS t 
+0

感謝您寶貴的答覆夥計...我想從這兩個表中獲得總數的ID ....在您的查詢中有沒有時間戳29-5-2915 08:17:29在第二張表中......'我的期望是,想要獲得29-5-2915 08:17:29和29-5-2915之間的總數據08 :17:29'.. – Tester

+0

@Tester:然後只需更改之間的語句 – Arion

0

要得到一個表的計數,你可以這樣做:

SELECT count(*) 
FROM Table1 
WHERE 
    ttime > '29-5-2915 08:17:29' AND 
    ttime < '29-5-2915 17:17:29' 

你可以這樣做,對於這兩種表和概括:

SELECT sum(count) 
FROM (
    SELECT count(*) 
    FROM Table1 
    WHERE 
     ttime > '29-5-2915 08:17:29' AND 
     ttime < '29-5-2915 17:17:29' 
    UNION 
    SELECT count(*) 
    FROM Table2 
    WHERE 
     ttime > '29-5-2915 08:17:29' AND 
     ttime < '29-5-2915 17:17:29' 
) 
-2

試試這個

 select t1.id,count(*) as countfrom table1 
    join table2 on t1.id = t2.id 
    and (t1.ttime between '29-5-2915 08:17:29' and '29-5-2915 17:17:29') 
    and (t2.ttime between '29-5-2915 08:17:29' and '29-5-2915 17:17:29') 
    group by t1.id 
+0

加入表格並不是什麼OP是關於 – Patrick

0

選擇總和(計數)從(SELECT COUNT(ID),其中8點17分29秒之間TTIME 1929年-5-2915 '和' 29-5-2915 17:17:29' union all select count(id)from table2 where'29 -5-2915 08:17:29'and '29 -5-2915 17:17:29' )作爲測試;