2017-12-26 7 views
0

フィールドにid、date、valueというフィールドを持つ 'graph'というテーブルがあります。mySqlにダミーデータを追加します。結果

このクエリ(dateStartとdateFinishは、私が定義されています):

SELECT id, date, value FROM graph WHERE date BETWEEN dateStart AND dateFinish 

戻り値この結果:

id  | date     | value 
id0 | 2017-10-01 00:01:23 | 13 
id1 | 2017-11-01 00:06:03 | 10 
... | ...     | ... 
id0 | 2017-15-01 00:05:33 | 34 
id1 | 2017-14-01 00:21:23 | 19 

私のように日付値で、各IDの最初と最後の行を複製する必要がありますdateStartとdateFinishの結果は次のようになります。

id  | date     | value 
id0 | dateFirst    | 13 
id1 | dateFirst    | 10 
id0 | 2017-10-01 00:01:23 | 13 
id1 | 2017-11-01 00:06:03 | 10 
... | ...     | ... 
id0 | 2017-15-01 00:05:33 | 34 
id1 | 2017-14-01 00:21:23 | 19 
id0 | dateFinish    | 34 
id1 | dateFinish    | 19 

要するに、私は重複する必要があります各idの最初と最後の行を指定します。

この要件の理由は、私たちが外部ライブラリを使用していることです。必要なパラメータはクエリだけです。クエリの後に結果に触れることはできません。そのため、純粋な可能であれば、mySQLソリューション。

答えて

0

あなたはunion allを使用することができます。

SELECT id, date, value 
FROM graph 
WHERE date BETWEEN v_dateStart AND v_dateFinish 
UNION ALL 
SELECT id, v_dateStart, value 
FROM graph g 
WHERE g.date = (SELECT MIN(g2.date) FROM graph g2 WHERE g2.id = g.id) 
UNION ALL 
SELECT id, v_dateEnd, value 
FROM graph g 
WHERE g.date = (SELECT MAX(g2.date) FROM graph g2 WHERE g2.id = g.id); 
関連する問題