2017-09-17 11 views
1

나는이 쿼리를 가지고 테이블에서업데이트 모든 대출 정보 WHERE user_id =? DATEDIFF()> 0 인 경우. 오류 1242 및 1093

Update loans set fine = case 
when DATEDIFF((
(SELECT * from (SELECT loans.due_date FROM loans where users_id = 1) AS l1)) 
,DATE(NOW())) > 0 THEN 1 
ELSE fine 
END 
WHERE users_id =1; 

+-------------+ 
| Field  | 
+-------------+ 
| users_id | 
| books_isbn | 
| aquire_date | 
| due_date | 
| fine  | 
+-------------+ 

그것은 단지 하나의 '대부'가 사용자와의 작업입니다하지만 난 그게 몇 가지와 함께 작동하도록하는 방법을 모른다 한 사용자의 '대출' = (

내가 쿼리는 다음과 같이가 someting를보고 기대
+2

논리를 설명하시기 바랍니다 –

+0

연체 일수에 따라 벌금을 높이고 싶었습니다 .DATEDIFF * 계수 다음은 테스트 용입니다. –

답변

1

는 :.

Update loans l 
    set fine = 1 
    where users_id = 1 and l.due_date < curdate(); 

샘플 데이터 및 원하는 결과없이 정확한 논리를 알아 내기 위해 조금 까다 롭습니다

+0

오, 좋은 결과를 얻을 수 있습니다. 고맙다, 나는 분명하게 작업을 복잡하게했다 =) compa의 첫번째 이용 가능한 길을졌다 날짜를 울리고 다른 사람들을 잊어 버렸다. –