2011-11-08 12 views
-1

解決できない問題が1つあります。Mysql Queue Start/End time

私は2つのテーブルを持っています。

表1:

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 

結果たかっ:2

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 

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 
... 
... 

以前と現在のフィールドは、キューおよびIの数を有します各キューについて知りたい、開始日と終了日、前のキューに前のキューがあることが分かっていて、現在のキューには新しいキュー。

私は、この結果を示すことができる1つのクエリが必要です。助けて。 :(

よろしく

答えて

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

あなたのサンプルデータを与えると、このクエリはあなたのDBスキーマとデータセットの要件を理解している限り、あなたの望む結果を返します。 – lanzz

+0

私はこの質問を理解していますが、リストに参加する予定です。待ち行列が必要です。 – 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内 テーブル1IDとテーブル2.IDのみ一致します – PookPook

+0

私の編集した回答を参照してください – lanzz

+0

問題を解決してくれてありがとうございます。しかし、キューには名前とスローこのクエリは、すべてのキューに参加しているので、私が望むキューの名前をチェックしないでください。 このご迷惑をおかけして申し訳ありません。 – PookPook