2011-11-08 114 views
-1

我有一個問題,我無法解決。Mysql隊列開始/結束時間

我有2個表。

表1:

ID | Time 
1 | 08:12:54 
2 | 08:15:40 
3 | 09:30:01 
4 | 10:15:15 
5 | 10:56:12 
6 | 11:00:03 

表2:

ID | Name| Previous | Current 
1 | Queue | null | 11 
2 | Queue | 11 | 19 
3 | Queue | 19 | 11 
3 | List | null | 11 
4 | Queue | 11 | 16 
4 | List | null | 11 
5 | Queue | null | 15 
6 | Queue | 15 | 19 

結果想:

NumberQueue | Start | End 
11 | 08:12:54 | 08:15:40 
19 | 08:15:40 | 09:30:01 
11 | 09:30:01 | 10:15:15 
15 | 10:56:12 | 11:00:03 
... 
... 

先前和當前的領域,具有隊列和我的數量想知道每個隊列,開始日期和結束日期,知道前一隊列有前一隊列,並且當前有新的隊列。

我想要一個可以呈現這個結果的查詢。幫我。 。:(

問候

回答

0

這個SELECT語句應提供您需要的信息:

SELECT Current AS Number, t1out.Time AS Start, (
    SELECT Time FROM Table1 AS t1in 
    WHERE t1in.ID > t1out.ID 
    ORDER BY ID ASC LIMIT 1 
) AS End FROM Table2 
LEFT JOIN Table1 AS t1out USING (ID) 
WHERE Table2.Name = 'Queue'; 
+0

就我的數據庫模式和數據集要求的理解而言,給出您的示例數據,此查詢將返回您所需的結果。 – lanzz

+0

然而,我明白這個querie會加入列表,我只想排隊。 – PookPook

+0

看到我編輯的答覆。 – lanzz

1
SELECT t1outer.ID, t1outer.Time AS start, (
    SELECT Time FROM Table1 AS t1inner 
    WHERE t1inner.ID > t1outer.ID 
    ORDER BY ID ASC LIMIT 1 
) AS end, Table2.Previous, Table2.Current 
FROM Table1 AS t1outer 
LEFT JOIN Table2 USING (ID); 
+0

我不認爲這是需要的,因爲目前和前排隊的人數都沒有ID的在表1中 Table1.ID和Table2.ID之間只匹配 – PookPook

+0

請參閱我編輯的答案 – lanzz

+0

謝謝解決我的問題然而,我沒有在問題中指定的隊列有一個名稱和thro呃這個查詢它加入所有的隊列,所以不檢查我想要的隊列的名稱。 不便之處 – PookPook