2011-02-12 35 views
2

我當前的查詢:如何從兩張表中選擇最近的時間戳和按時間戳排序?

SELECT Series.*, Episodes.* FROM Series, Episodes 
WHERE EpisodeAirDate > '.time().' AND Episodes.SeriesKey = Series.SerieID 
GROUP BY Series.SerieTitle ORDER BY Episodes.EpisodeAirDate; 

我想要從情節,其中Episodes.EpisodeAirDate最接近當前時間的信息(時間())。有了這個,我只能得到數據庫中的最後一集。

我試着

SELECT Series.*, Episodes.*, MIN(Episodes.EpisodeAirDate) AS EpisodeAirDate FROM Series, Episodes 
WHERE EpisodeAirDate > '.time().' AND Episodes.SeriesKey = Series.SerieID 
GROUP BY Series.SerieTitle ORDER BY EpisodeAirDate; 

哪種作品,但Episode.EpisodeTitle等不與時間戳列相對應。

這裏我使用MIN() - query(http://grab.by/8UNY)。我沒有被允許張貼圖片,所以也許一個鏈接就足夠了:)

正如你所看到的,SerieTitle和「時間直到」是正確的,但EpisodeTitle,EpNo和SeasonNo是第一個查詢。

真的很難解釋。我希望你能理解這一點! :)

+0

使用MySQL NOW()或TIME()函數有問題嗎?你有沒有簽出[這個問題](http://stackoverflow.com/questions/4906589/sqlite-select-row-based-on-time-of-day/4906655#4906655)? – jswolf19 2011-02-12 05:12:13

+0

如果你有一個非常小的數據庫,最簡單的答案就是把它分成多個步驟:選擇所有的劇集,然後循環播放,然後分別查詢每個劇集的即將播出的劇集。不優雅或快速.... – 2011-02-12 05:26:55

回答

1

請試試這個:

SELECT S.*,E.* FROM Series S 
JOIN (SELECT SeriesKey, MIN(EpisodeAirDate) MinDate FROM Episodes 
    WHERE EpisodeAirDate > NOW() GROUP BY SeriesKey) M 
    ON M.SeriesKey = S.SerieID 
JOIN Episodes E ON E.SeriesKey = S.SerieID AND E.EpisodeAirDate = M.MinDate 
ORDER BY E.EpisodeAirDate; 

編輯:添加ORDER BY子句。