2014-05-14 3 views
1

아래의 하위 쿼리는 가장 가까운 날짜를 과거에 반환합니다.이 옵션을 적용하여 과거 또는 미래의 가장 가까운 날짜를 찾습니다.MySQL : 과거 또는 미래의 가장 가까운 날짜 찾기

SELECT date, 

    (SELECT value 
    FROM `users check-ins` as c 
    WHERE c.date < p.date AND `userid` = '$userid' 
    ORDER BY c.date DESC 
    LIMIT 1) as weight 

FROM `users photos` as p 
WHERE `userid` = '$userid' 
ORDER BY date ASC 

은 내가 ABSDATEDIFF 기능에 대해 읽었지만 내가 상상했던 그들이 작업을 얻을 수 없습니다

SELECT date, 

    (SELECT value 
    FROM `users check-ins` as c 
    WHERE `userid` = '$userid' 
    ORDER BY ABS(DATEDIFF(c.date, p.date)) DESC 
    LIMIT 1) as weight 

FROM `users photos` as p 
WHERE `userid` = '$userid' 
ORDER BY DATE ASC 

그래서 하위 쿼리 p.date

에 가장 가까운 행에서 value를 반환해야합니다

편집 :

그녀 e는 SQLfiddle입니다.

+0

이 지금에 오기 – Strawberry

+0

SET 원하는 결과와 함께 (및/또는 sqlfiddle) 적절한 DDLs을 제공하는 것이 좋습니다. – ditto

+0

일시적으로 반환되는 값 중 하나 인 ABS (DATEDIFF (c.date, p.date))를 추가 하시겠습니까? 그럼 실제로 무슨 일이 일어나는 지 알 수 있습니까? – Zoredache

답변

0

당신은 서브 쿼리에없는 ascdesc으로 주문해야합니다

SELECT date, 

    (SELECT value 
    FROM `users check-ins` as c 
    WHERE `userid` = '$userid' 
    ORDER BY ABS(DATEDIFF(c.date, p.date)) ASC 
    LIMIT 1) as weight 

FROM `users photos` as p 
WHERE `userid` = '$userid' 
ORDER BY DATE ASC 
관련 문제