2011-09-14 3 views
4

나는 어떤 종류의 사용자 동작 X를 내 데이터베이스에 저장합니다.MySQL에서 다른 숫자 값을 편집하는 방법은 무엇입니까?

X_actions --- Time --- New_actions 
Name1 - 19:07 - 3 
Name2 - 19:10 - 1 

가 해당 작업을 의미한다 :

User does action X at 19:07 
User does action Y at 19:08 
User does action Y at 19:08 
User does action X at 19:10 
User does action Y at 19:12 

지금 내 데이터베이스에서 다음 값이 :는 사용자가 다른 액션 Y 않는 경우 필드 'New_actions은'카운트 그래서 예를 들어 1입니다 Y는 Name1 다음에 두 번, Name2 다음에 한 번 수행되었습니다. 날 이해 해주길 바래. 그러나 그것에 대해 질문이 있습니다. 매시간 2 행동을 삭제해야합니다. 처음에는 문제가되지 않아야합니다. Name1의 'New_actions'필드는 1로 편집해야하지만 두 번째로 Name1을 0으로 편집해야하는 스크립트를 만들려면 어떻게해야합니까?

+2

귀하의 특정 질문을 이해하는 데 어려움이 있습니다. 작업 전에 표 # 1 (열 및 행) 및 작업 후 # 2 표를 그리면 매우 신속한 답변을 얻을 수 있습니다. – danorton

+0

답장을 보내 주셔서 감사합니다. 내 말은 : SQL은 첫 번째 행을 편집해야하지만 'New_actions'필드의 값이 0에 도달하면 두 번째 행의 값을 편집해야합니다. 그리고 도달하면 (또는 이미) 0, 스크립트는 3 행의 값을 편집해야합니다. 지금 나를 이해하기를 바랍니다. – Jordy

답변

1
SET @remove := 2; 

UPDATE my_table 
SET New_actions = 
    IF(New_actions >= @remove, 
     (@remove := 0) + New_actions - @remove, 
     IF(@remove := @remove - New_actions, 0, 0)) 
WHERE New_actions <> 0 
ORDER BY my_table.Time; 

을 수행 할 것으로 보인다 블록 위에 세 번 실행 한 결과입니다

+------+-------------+ 
| Time | New_actions | 
+------+-------------+ 
| 1 |   3 | 
| 2 |   3 | 
| 3 |   3 | 
+------+-------------+ 
+------+-------------+ 
| 1 |   1 | 
| 2 |   3 | 
| 3 |   3 | 
+------+-------------+ 
+------+-------------+ 
| 1 |   0 | 
| 2 |   2 | 
| 3 |   3 | 
+------+-------------+ 
+------+-------------+ 
| 1 |   0 | 
| 2 |   0 | 
| 3 |   3 | 
+------+-------------+ 
0

여기, 당신이 사용하는 물건을 단순화하기 위해 INT 시간 열을 저장 프로 시저 :

http://dev.mysql.com/doc/refman/5.0/fr/stored-procedures.html

+0

나는 이것을 어떻게 사용할 수 있는지 이해할 수 없다고 생각한다 .-(제발 도와 주실 수 있겠습니까? 고맙습니다 ;-) – Jordy

+0

작업을 수행하는 저장 프로 시저 AddActions (유형 [x/y])를 만들 수 있습니다. 행동과 물건의 ...). 또한 Date 열을 추가하고 2 시간이 넘은 행을 필터링해야합니다. – ykatchou

+0

예,하지만 문제는 시간이 지났습니다. SQL은 첫 번째 행을 편집해야하지만 'New_actions'필드의 값이 0에 도달하면 두 번째 행의 값을 편집해야합니다. 그리고 도달 한 경우 (또는 이미) 0이면 스크립트는 3 행의 값을 편집해야합니다. 당신이 나를 이해할 수 있기를 바랍니다 .-) (또는 나는 당신을 이해하지 못합니다 ;-) – Jordy

관련 문제