2016-04-08 23 views
0

İyi günler dan başlamak zaman aralığı sırasında meydana değerleri,Sorgu süresi önceki gün

Ben 23:00 04'e HRS arasında gerçekleşen tüm değerler döndürmek için aşağıdaki SQL sorgusu çalışıyorum bulmak için tarihten bağımsız olarak.

Sorgulama, başlangıç ​​saatinin bitiş saatinden daha küçükse, örneğin 04:00 - 08: 00 saatleri arasında çalışır. 'Zaman' sütunu datetime değişkenidir Bu işlemi nasıl yapabilirim?

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; 

Yukarıdaki sorgu çalışır ancak döndürüyor 'Boş küme'

+0

Hendek katılmak operasyon için eski okul virgül sözdizimi. Yeni JOIN anahtar kelimesini kullanın. (Hala buna "daha yeni" diyebilir miyiz? Virgül sözdizimi gerçekten gerçekten yaşlanıyor.) Ayrıca, WHERE yan tümcesini "ON" yan tümcesine birleştirme yüklemesini/yüklemelerini yeniden yerleştirin. Ve boş set beklenen sonuçtur, çünkü 'b.time' değerinin bu koşulların her ikisini de karşılayamayacağı garanti edilir. Bu koşullar karşılıklı olarak münhasırdır. – spencer7593

+0

Geri bildiriminiz için teşekkür ederiz. –

cevap

0

Birincisi, doğru JOIN sözdizimi öğrenirler. İkincisi, 'daki GROUP BY numaralı sütunlara veya toplama işlevlerinin bağımsız değişkenlerine sütun eklemeyin. Ardından OR yerine AND kullanın:

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

ile çalışın Birlikte çalışmaktan mutluluk duyarsınız. Teşekkürler VEYA çalıştı. –

İlgili konular