2016-04-08 1 views
0

良い一日で、クエリは、前日から

私は04に23:00の間に発生したすべての値を返すために、SQLクエリの下にしようとしている:00hrsを、日付にかかわらず。

開始時刻が終了時刻よりも小さい場合(たとえば、04:00〜08:00hrs)、クエリが機能します。 'time'列はdatetime変数です この作業を行うにはどうすればよいですか?

SELECT AVG(Taxi) AS Average,capacity, name, time 
FROM Stations s, TaxiUsage b 
WHERE s.usageID=b.stationId AND TIME(b.time)>= '23:00:00' AND TIME(b.time)<'04:00:00' 
GROUP BY time; 

上記のクエリが実行されますが、戻り '空集合'

+0

ディッチ結合操作のための古い学校のコンマの構文。新しいJOINキーワードを使用してください。 (実際にはまだそれを「新しい」と呼んでもかまいませんか?コンマ構文は本当に古くなっています)また、WHERE句の結合述語をON句に再配置します。 'b.time'という値がこれらの条件を両方満たすことができないことが保証されているので、空集合は期待される結果です。これらの条件は相互に排他的です。 – spencer7593

+0

フィードバックのお寄せいただきありがとうございます –

答えて

0

まず、適切なJOIN構文を学びます。第二に、には、GROUP BYにない列や、集約関数の引数を含めないでください。 その後、OR代わりのAND使用:

SELECT time, AVG(Taxi) AS Average 
FROM Stations s JOIN 
    TaxiUsage u 
    ON s.usageID = u.stationId 
WHERE TIME(b.time) >= '23:00:00' OR TIME(b.time)<'04:00:00' 
GROUP BY time; 
+0

あなたは仕事をするには喜びが必要です。 ORに感謝します。 –

関連する問題