2011-02-12 4 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() - 쿼리 (http://grab.by/8UNY)를 사용하고 있습니다. 이미지를 게시 할 수 없으므로 링크가 충분할 것입니다.

SerieTitle과 "Time until"은 정확하지만 EpisodeTitle, EpNo 및 SeasonNo는 첫 번째 쿼리의 값입니다. .

정말 설명하기가 어렵습니다. 나는 당신이 이것을 이해하기를 바랍니다! :)

+0

MySQL의'NOW()'또는'TIME()'함수를 사용할 때 문제가 있습니까? [이 질문] (http://stackoverflow.com/questions/4906589/sqlite-select-row-based-on-time-of-day/4906655#4906655)을 확인 했습니까? – jswolf19

+0

데이터베이스가 아주 작은 경우 쉬운 대답은 여러 단계로 나누는 것입니다. 즉, 모든 에피소드를 선택한 다음 루프를 반복하고 각 시리즈에 대해 다가오는 에피소드를 별도로 쿼리합니다. 우아하지 않거나 빠릅니다 .... –

+0

jswolf19 : 고마워요. 나는 집에 도착했을 때 그것을 확실히 확인할 것입니다. Eirich : 그래, 할 수있어.하지만 그게 내 추측이야. 그게 얼마나 추해 질지 몰라. –

답변

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 절.

+0

제안 된 수정에 관한 의견 : 일반적인 제안은 사람들의 * 코드 수정에 매우 신중해야합니다. 공백 (들여 쓰기)을 조정하고 코드 값이 코드로 인식되도록하는 것 이외에는 수정을 삼가야합니다. 그 이유는 당신이 무엇을 고치고 있는지가 코드가 제대로 작동하지 못하게하는 바로 그 것일 수 있다는 것입니다. 질문의 쿼리 구문은 실제로 잘못되었지만 Asker가 * 올바른 * 방법으로이를 작성하지 않으면 작동하지 않는 것일 수 있습니다. 명심할 것. –

+0

@Cody Grey : 저는 공백만을 편집하고 어떤 식 으로든 구문을 편집하지 않았 음을 확신합니다. 원래 입력 된 쿼리는'Series. *, Episodes. *'를 포함하지만 잘못된 형식/공백으로 인해 별표없이 표시됩니다 (기울임 꼴 마크 업으로 해석됩니다). –

+0

아, 그럼. 우리가 검토 목적을 위해 제공 한 단계별 비교가 항상 완벽하게 정확한 것은 아닙니다 ... 특히, 입력 된 원본 텍스트를 볼 수 없었습니다. 편집이 완벽하게 유효하다는 것이 맞습니다. 내 사과. 원한다면 질문을 다시 편집하십시오. –

관련 문제