안녕하세요. 이제 걸음마를 하는 입문자입니다.
나름대로 혼자서 db를 만들다가 답이 나오질 않아서 여기저기 인터넷을 뒤지다가 이런 곳을 발견했네요.
게시판을 찾다가 아래와 같은 글을 발견했는데, 제가 찾던 답과 유사합니다만 무엇이 문제인지 해결이 되지 않고 있습니다.
가입하자 마자 이렇게 질문을 드려서 죄송합니다.
테이블 설계 구조를 보면 아래와 같습니다
먼저 회원_1 테이블과 회원_2 테이블만을 두고 보면,
회원_1 테이블은 자신이고 회원_2 테이블은 부친에 관한 정보입니다.
회원_1 테이블에서 ME항에 자신의 고유 번호를 넣고,
회원_2 테이블의 ME항은 부친의 고유 번호를 넣는데,
회원_2 테이블의 FATHER 항에 회원_1 테이블의 ME항의 값을 가져 와야 하는데, 어떻게 가져와야 할지 모르겠습니다.
update #ta
회원_3 테이블 또는 회원_4 테이블의 관계도 마찬가집니다.
회원_3 테이블과 회원_1 테이블의 관계는 회원_3 테이블의 정보는 어머니이며, 회원_1 테이블의 정보는 자신이니, 회원_3 테이블 MOTHER 항에 회원_1 테이블의 ME항의 값을 가져옵니다.
열이나 항목 전체를 가져 오는 것이 아니라 각 테이블에서 특정한 값을 가져오는 것입니다.
insert into 처럼 새로운 열이나 행을 추가하는 것이 아니라 이미 있는 테이블에 특정한 값을 가져 오는 것입니다.
왜 이런 식으로 만드냐면 회원 기준에 따라서 다르도록 하기 위해서입니다. 테이블 두 개로 자신과 관계 테이블을 만들면 중복되는 것이 너무 많아서요.
게시판에서 다음과 같이 제가 원하는 쿼리문과 유사한 것을 발견해서
set 필드= b.필드
from #ta a inner join #tb b on a.필드 =b.필드
update 회원_2 set FATEHR = 회원_1.ME from 회원_2 innor join 회원_1 on 회원_2.FATHER = 회원_1.ME;
뭐가 문제인지 제대로 되지 않고 있습니다.
고수님의 도움을 부탁드립니다.
Comment 6
-
항해자™
2014.09.29 10:31
-
백바서
2014.09.29 11:27
그림은 mssql 2012에서 제가 만들어 본 것입니다.
ME, FATEHR, MOTHER 등은 이름이 아니라 고유 번호로 하려고 합니다.
회원과 회원관계로 하려면 중복되는 게 많지 않을까 해서요.
예를 들어서 회원1의 회원 관계였던 사람이 회원2가 되고 회원1이 회원2의 회원 관계가 되고...이런 식으로...
물론 제가 잘 몰라서 회원과 회원관계로 어떻게 해야할지...
-
백바서
2014.09.29 11:44
아래에서 찾아보니 요런 게 있더라구요.
update #ta
set 필드= b.필드
from #ta a inner join #tb b on a.필드 =b.필드
그래서 이와 유사하게
update 회원_2 set ME = b.FATHER
from 회원_2 a inner join 회원_1 b on a.ME = b.FATHER;
이렇게 적용을 해 보았는데 무엇이 문제인지 모르겠습니다.
-
항해자™
2014.09.29 15:56
뭐가 어떻게 안되나요?? 문법 오류라고 나오나요??
create table #tmpA (ccc int)
create table #tmpB (ccc int)
update a
set a.ccc = b.ccc
from #tmpA as a
inner join
#tmpB as b
on a.ccc = b.ccc
go
-
자리비움
2014.09.29 13:35
회원과 관계 테이블을 만드신 후 교차 엔티티가 나와야 할 것으로 보입니다.
(위 구조로는 3대(조부모,부모,자식) 이상의 관계 처리가 힘들어보입니다.)
지금 문의하신 문제를 해결한다고 하시더라도
금새 또 다른 문제에 다시 봉착하게 될 듯 합니다.
정규화 관련된 내용을 우선 공부하시는게 도움이 될 것 같습니다.
-
백바서
2014.10.05 14:09
답변 갑사합니다.
위 그림은 어디에서 가져오신 건지 알려주실 수 있나요??
원문을 한번 보고 싶습니다,,,
저의 짧은 소견에 위 디자인이 좋은것 같아 보이지는 않은것 같습니다,,
"회원"과 "회원관계" 이렇게 테이블 2개만 있으면 될것 같은데,,,
위와 같은 형태라면 어떤 회원이 개명하면 어떻게 될까요??