2017-03-10 5 views
0

私はMySQL 5.7で何もしないで試してみましたが、現在の1時間ごとに複数のテストレコードをグループ化してグループ化しています。今は彼らが結果に欠けている。MySQL - ゼロ値を含む時間単位のグループ

時間表を作成しました。時間は0〜23時間です。

> SELECT h.hour, COUNT(h.id) FROM hours h LEFT OUTER JOIN 
> test_result_detail td ON (h.hour = HOUR(td.date_time)) AND 
> td.date_added = '2017-03-10' JOIN seq_test_set station ON 
> td.station_id = station.id AND station.station = 'TS-5026' WHERE 
> h.hour <= 13 GROUP BY 1; 

結果: enter image description here

望ましい結果:

1 0 
2 0 
3 0 
4 0 
5 0 
6 5 
7 32 
8 29 
9 22 
10 24 
11 15 
12 14 
13 7 
+0

sqlfiddleにテーブル構造とサンプルデータを提供できますか? –

答えて

1

私はあなたの第二JOINがちょうどLEFT JOINあるべきとCOUNT()LEFT JOINエドテーブルから列を必要だと思います。

SELECT h.hour, COUNT(station.id) 
FROM hours h LEFT OUTER JOIN 
    test_result_detail td 
    ON h.hour = HOUR(td.date_time) AND 
     td.date_added = '2017-03-10' LEFT JOIN 
    seq_test_set station 
    ON td.station_id = station.id AND 
     station.station = 'TS-5026' 
WHERE h.hour <= 13 
GROUP BY h.hour; 
+0

このクエリには、TS-5026だけでなくすべてのテストステーションが含まれています。 – xXPhenom22Xx

+1

これを 'WHERE'に追加してください:' AND(station.station IS NULL OR station.station = 'TS-5026') ' – CptMisery

+0

それはトリックでした、ありがとう!解決策を返信し、 – xXPhenom22Xx