동행
107
2021-04-12 16:58:36
9
109

mssql 질 문 있습니다.


 $query = "UPDATE dbo.hb_member SET postCnt = postCnt + 1 ,level = (

                    CASE
                        WHEN (postCnt) > 5 THEN 'l_002' 
                        WHEN (postCnt) > 10 THEN 'l_003'
                        ELSE 'l_001'
                    END
                )
                WHERE mem_id = :mem_id" ;


여기 쿼리 문에서 0에서 순차적으로 5 넘어갈때 level이 update 되는데 왜 10일때는 안될까요?
0
  • 답변 9

  • 20170923
    2k
    2021-04-12 17:02:55

    l_003이 업데이트 되어야하는데 안된다는 말씀이신가요?

    너무 러프하게 말씀하셔서 무슨 말씀인지 도통 모르겠네요

  • 동행
    107
    2021-04-12 17:03:49

    맞습니다. 카운트를 하나씩 업데이트를 해서 level을 업데이트 하는 것입니다.

  • 20170923
    2k
    2021-04-12 17:06:04

    안 된다는게 10일 때 인가요? 10 이상일 때 인가요?

    5,6,7,8,9,10.... ==> l_002

    11,12,13,14,15....=> l_003

    위 코드 상으로는 인 거 같은데요

  • 동행
    107
    2021-04-12 17:06:48 작성 2021-04-12 17:07:20 수정됨

    네 그렇게 구현했는데 16까지 postCnt를 올려도 level이 업데이트가 안되네요

  • 20170923
    2k
    2021-04-12 17:09:12

    5까지는 l002가 되는거에요?

  • 동행
    107
    2021-04-12 17:10:39

  • 20170923
    2k
    2021-04-12 17:11:47
    WHEN (postCnt) > 10 THEN 'l_003'
    WHEN (postCnt) > 5 THEN 'l_002' 

    이렇게 한번 해보실래요?
  • 동행
    107
    2021-04-12 17:17:31
    감사합니다 적용하니깐 카운트에 맞게 업데이트 되네요
  • 20170923
    2k
    2021-04-12 17:20:00
    안되시던 이유는 위부터 처리되는데 >5가 >10도 포함하고 있어서 그렇습니다 if 로직을 세우실때는 범위를 생각하시구 작성하시면 이런 일 줄어드실거에요
  • 로그인을 하시면 답변을 등록할 수 있습니다.