2013-01-14 2 views
0
select t1.columnFK from table1 t1, table2 t2 where t1.columnFK=t1.columnpk AND t2.somecolumn='value1' 



select t2.columnPK from table2 t2 where t2.somecolumn='value2' 

두 번째 값의 첫 번째 select 문에서 모든 값을 업데이트해야합니다.부모 테이블의 FK 열을 기준으로 하위 테이블의 PK를 업데이트하십시오.

다음
UPDATE table1 
SET table1.columnFK = table2.columnPK 
From tabel1 t1, table2 t2 
Where t1.columnfk=t2.columnpk AND somevalue='value2' 

이 table2.columnpk가 table1.coulmnfk으로 참조되는 관계이다 : 나는이 같은 업데이트 쿼리를 작성했습니다.
table1.hbm.xml

<many-to-one 
      name="table2" 
      column="&quot;coulmnfk&quot;" 
      class="table2class" 
      cascade="none"/> 

표 2의 관계는 다음과 같이 진행됩니다

<set name="table1" table="&quot;table1&quot;" inverse="true" cascade="none"> 
       <key column="&quot;coulmnFK&quot;"/> 
       <one-to-many class="table1"/> 
      </set> 

확실하지가 어떻게 첫 번째 조건이 포함됩니다.

+0

첫 번째 선택에서 "where t1.columnFK = t1.columnpk"라는 조건을 작성했습니다. 어느 쪽이 잘못 되었습니까? – DevelopmentIsMyPassion

+0

또한 업데이트 진술에서 오류가 있습니까? 나는 당신이 방금 somevalue = 'value2'를 썼기 때문에 당신이 당신의 업데이트 문장에 오류를 가져올 것이라고 생각합니다. 대신 t2.somevalue = 'value2'를 사용해야합니다. 당신은 시도 할 것인가 – DevelopmentIsMyPassion

+0

@Himanshu Yadav 어떤 종류의 관계인가? :) 부모 테이블에 fk로 자식 pk가 있습니까? parent pk를 가리키는 child fk를 업데이트하고 싶지 않으십니까? – bonCodigo

답변

1

나는 당신의 참조 무결성을 받아들이 기 조금 이상하다고 생각합니다. 보통 자식 테이블 fk는 부모 pk로 업데이트됩니다. 여기

는 cureently 자녀는 talble에 FK로 부모 PK를 가정, 당신이 사용해야 할 수도 있습니다 논리이며, 당신은 join

를 사용하여 ... 부모 테이블에 FK로 자식 PK를 추가하려고
UPDATE parent 
SET parent.childPK = child.PK  
FROM 
    Parent 
    JOIN 
    child ON parent.PK = child.ParentPK 
WHERE parent.somecolumn in ('value1','value2') 
; 
+0

@Himansu이 시도하고 의견을주세요, 당신의 질문을 이해할 수있는 조금 모호한, 나를 용서해주십시오 :) – bonCodigo

+0

parent.somecolumn 존재하지 않습니다. Somecolumn은 외래 키를 통해 상위 테이블을 참조하는 하위 테이블에만 존재합니다. –

+0

질문에서 그것은 table2 또는 table1이 부모 키라고 말하지 않았기 때문입니다. 그래서 이것은 내 최고 * 장님 * 추측 .. 당신에게 논리를 제공합니다. 이 경우'WHERE child.somecolumn in (...)'을 변경하고 시도 할 수 있습니다. – bonCodigo

관련 문제