2017-07-15 16 views
0

間2からの結果を結合: Tableは、iを1つのquestions.First 1つの私のテーブル構造は、ベローズである持っている日付とpersonstatusカラム(SQLクエリ)

この表では、例えばユーザが選択され、datetime列とpersonstatus列を有します2日目は最初の2017-07-03秒は2017-07-05、結果の表示方法は2017-07-03でMIN(id)はどのようにpersonstatus = 'i'で、どのようにMAX(id)がどのように2017-07-03 personstatus = 'o'、

personstatus = 'i'の2017-07-05のMIN(id)と2017-07-05のpersonstatus = 'oのMAX(id)はどのようになっていますか? '、ベローはテーブルの結果を追加されます。 table and result

THANKS。

2つの日付の間を選択するには多くの方法があります:11/8月/ 2017を更新しました

+0

写真はありませんありがとう。 https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-queryを参照してください。 – Strawberry

答えて

0

http://sqlfiddle.com/#!9/0cc3ec/22

Create Table t(
    id int, 
    _date datetime, 
    personstatus char(5) 
); 

Insert Into t(id, _date, personstatus) 
Values 
(1,'2017-07-03 10:00:00','i'), 
(2,'2017-07-03 10:10:37','i'), 
(3,'2017-07-03 16:10:00','o'), 
(4,'2017-07-03 17:40:27','o'), 
(5,'2017-07-05 09:10:22','i'), 
(6,'2017-07-05 09:30:43','i'), 
(7,'2017-07-05 17:44:02','o'), 
(8,'2017-07-05 17:50:19','o'); 

Select @input := '2017-07-03'; 

Select 
    t1.*, t2.* 
From 
    (Select * From t Where DATE(_date) = @input Order by _date ASC Limit 1) t1 
Join 
    (Select * From t Where DATE(_date) = @input Order by _date DESC Limit 1) t2 

。たとえば、次のようにすることができます。
1.上記のキューを使用してプロシージャを作成し、日付をループしてプロシージャを呼び出します。または
2. 2つの日付の間の日付でtempテーブルを作成し、tempテーブルをt1とt2に結合します。または
3.日付をループして、キューを呼び出します。

私は現在MySQLサーバーを持っていません。あなたは以下の擬似コードうまくことを願って:Leo.W @この良い答えのため

declare @start date 
declare @end date 

set @start = '2017-02-03' 
set @end = '2017-02-05' 

while (@start <= @end) begin 
    Select 
    t1.*, t2.* 
    From 
    (Select * From t Where DATE(_date) = @start Order by _date ASC Limit 1) t1 
    Join 
    (Select * From t Where DATE(_date) = @start Order by _date DESC Limit 1) t2 

    set @start = dateadd(day, 1, @start) 
end 
0

おかげで、どのように2日付範囲、例を作ることを。

2017年2月3日に最小のID、2017年2月3日に最大ID、2017年2月4日に
最小ID、2017年2月4日に最大ID、2017年

最小ID -02-05は、最大このクエリをしようと2017年2月5日

イムのidではなく、正しい結果

選択 t1のです。 、t2。 から (_date> = T '2017年2月3日午後12時00分00秒' から* を選択し、< = '2017年7月5日夜十一時59分59秒' を_DATE _date ASC順)T1 入会 (選択*日時> = '2017-02-03 00:00:00' と_date < = '2017-07-05 23:59:59')_2デートDESCによってt2

関連する問題