|
매번 친절한 답변 고맙습니다...
바로 그 의문사항이 문제입니다.
동일한 REG_SEQ값이 두개이상 존재합니다.
그러기에 동일한 REG_SEQ값 전의 LINK_ID와 후의 LINK_ID 값을 뽑아가며 돌리기가 난감하다는...
돌면서 유일한 REG_SEQ값도 있고...
매번 감사합니다... 달리 생각을 해야하는건지..
장성호 님이 쓰신 글 :
: 제가 제대로 이해했는지 모르겠는데요
:
: 그러니까 "REG_SEQ" 만 이전값과 같은지 비교하고
: if 같으면 : 이전 LinkID와 현재 LinkID를 같이 저장한다구요?
:
: 의문사항 있습니다.
: 만약 "REG_SEQ"가 2개이상 똑같은것이 있는경우는 어떻게 하죠?
:
: 아래 제가 이해한데로 샘플 코딩해봅니다.
:
: 이 코드는 DB에서 REG_SEQ 로 order by 해서 query한경우입니다
: 만약 db에서 order by도 지원하지 않는다면
: STL의 vector 나 list 같은것을 이용해서 sorting한뒤에
: 아래와 같은 로직으로 돌리면 되겠네요
:
:
: String sRegSeq0,sRegSeq1;
: String sLink0,sLink1;
:
: for(i = 0; i < itCount; i++)
: {
: sRegSeq1 = m_DAO->t_DBA->GetField("REG_SEQ"); //시퀀스 값
: sLink1 = m_DAO->t_DBA->GetField("LINK_ID1"); // ID 값
:
: if(sRegSeq1==sRegSeq0 ) //1. 이전 REG_SEQ 와 같은 경우
: {
: //A) (이전에 똑같은 REG_SEQ에 해당하는 모든 LINK_ID가 저장됨)
: sLink0=sLink0+","+sLink1; //","로 구분함
: Save( sLink0 );
: Function1();//2) 해당함수 호출
:
: //B) 만약 REG_SEQ 가 똑같은 경우 바로앞에 하나만 LINK_ID를 저장한다면
: Save(sLink0,sLink1);
: sLink0=sLink1;
: Function1(); //2) 해당함수 호출
:
: }
: else
: {
: sRegSeq0=sRegSeq1;
: sLink0=sLink1;
: Save(sLink0);//1) save sLink0 //---> 현재 LinkID만 저장됨
: Function2(); //2) 해당함수 호출
: }
: m_DAO->t_DBA->MoveRec(i);
: }
:
:
:
: kurt 님이 쓰신 글 :
: : 장성호 님이 쓰신 글 :
: : : DB가 GroupBy가 안된다고요?
: : : 그럼 join도 기대하지 말아야 겠네요
: : :
: : : 그냥 query결과를 가지고 해야한다면
: : :
: : : 그냥 변수하나 만들어두고 이전 Record값과 계속 비교하는 로직이 가장 이해하기 쉽겠네요
: : :
: : :
: : : [방법1]
: : :
: : : 1. select 할때 order by REG_SEQ로 하세요
: : : sql="select * from table_name order by REG_SEQ";
: : :
: : : 2. 이전 Record값을 저장할 변수를 하나 두고 계속 비교하는 방법입니다.
: : :
: : : String sRegSeq0,sRegSeq1;
: : : String sLink0,sLink1;
: : :
: : : for(i = 0; i < itCount; i++)
: : : {
: : : sRegSeq1 = m_DAO->t_DBA->GetField("REG_SEQ"); //시퀀스 값
: : : sLink1 = m_DAO->t_DBA->GetField("LINK_ID1"); // ID 값
: : :
: : : if((sRegSeq1!=sRegSeq0 ) && (sLink1!=sLink0)) //unique한경우를 찾는 비교문 ..
: : : {
: : : sRegSeq0=sRegSeq1;
: : : sLink0=sLink1;
: : : // REG_SEQ값이 다음 REG_SEQ값과 같은지 다른지 체크하여 각각 LINK_ID1을 저장해야 하는데??
: : : }
: : :
: : : m_DAO->t_DBA->MoveRec(i);
: : : }
: : :
: : :
: : : //....
: : : if 구문이 님의 의도와 맞는지 잘모르겠습니다만 ..
: : : 위와같이 하는 방법이 일단 이해하기 쉽고 심플할 것 같네요
: : : 그런데 이정도는 님께서도 충분히 생각하실수 있으실것 같은데..
: : : 제 답이 엉뚱하다면 좀더 명확하게 질문 부탁드립니다.
: :
: : 제 질문이 모자랐나봅니다.
: : 루프문을 돌면서 REG_SEQ 값이 이전 값과 동일하다면 이전 REG_SEQ의 LINK_ID 값과 현재의 LINK_ID 값을 저장하여
: : 해당 함수를 호출/처리하고, 계속 루프를 돌면서 이전 REG_SEQ값과 현재의 REG_SEQ값이 틀리다면 현재의 REG_SEQ값에 해당하는 LINK_ID 를 저장하여 해당 함수를 호출/처리하는 로직입니다. 머리가 돌이 되어버린 느낌...ㅠㅠ
|