select * from d_member as a, d_city as b where a.useridx = b.useridx and userid like 'testtt'
대충 이런식으로 쿼리를 날리면 d_member과, d_city에 있는 모든 값이 불러와지죠.
두 테이블에서 같이 쓰는 값은 useridx 뿐입니다.
이렇게 d_member의 testtt의 userid를 가진 사람의 값을 가져오게 되는데
문제는 두 테이블의 칼럼수가 합쳐서 근 38개가 됩니다.
그런데 이 중 값을 테이블로 뿌릴 때 17개만 뿌립니다.
while (dbReader.Read())를 이용하여
dbReader["useridx"] 원하는 칼럼만 썻던거죠.(관리자 툴에 유저 패스워드를 출력할수는 없으니)
그렇다면, 이 17개만 update를 하려면 어떻게 해야할까요? 하나의 테이블에서 원하는 칼럼만 업데이트야 문제가 없지만...
select로 두개의 테이블을 가지고 왔는데, 두 개의 테이블을 원하는 칼럼만 update 할 수 있는 방법이 있나요?
그리고, userid라는 칼럼이 둘 중 어느 테이블에 있는지 모를 때(컴퓨터 기준) 그걸 찾아서 해당 테이블에 넣는 방법이 있는지도 궁금합니다.(실제로 nickname은 d_member에만 있는 경우)
고수분들의 도움이 필요합니다.
Comment 4
-
이스트럭(강동운)
2014.02.21 13:58
-
Mr황
2014.02.21 15:03
제가 이해가 좀 안되서 그런데
update d_member SET useridx='6', userid='testid', nickname='테스트유저', userlevel='30', pettype='2', petlevel='9' from d_member a inner join d_city b on a.useridx=b.useridx where a.useridx='6'
예를 들어서입니다.
위의 칼럼에 보시면 useridx, userid, nickname, 뭐 이런게 있지 않습니까? 그런데 문제는, userlevel까지는 d_member의 칼럼이고, 뒤의 pettype, petlevel은 d_city의 칼럼이라는게 문제입니다. 이런 경우 어떻게 해야할까요?
-
이스트럭(강동운)
2014.02.21 18:00
그렇다면.. 당연히 update 쿼리를 두번 날려야하지 않을까요? ^^;;
update d_member
set user_level = 변경할값
...
where useridx = 6
update d_city
set pettype = 변경할값
, petlevel = 변경할값
...
where useridx = '6'
-
Mr황
2014.02.21 20:39
흐음... 제가 MS-SQL에 너무 많은 걸 바란 것 같습니다. 답변 감사합니다. 일단 이렇게 해야겠네요.
안녕하세요~! update문도 조인이 가능합니다.
update d_member
set 컬럼1 = 변경할값
, 컬럼2 = 변경할값
....
from d_member a
inner join d_city b on a.useridx = b.useridx
where a.userid like 'testttt%';
감사합니다~~